From: Ronnie Sahlberg <sahlberg@google.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Ronnie Sahlberg <sahlberg@google.com>
Subject: [PATCH 0/5] ref-transactions-rename
Date: Fri, 25 Jul 2014 09:58:36 -0700 [thread overview]
Message-ID: <1406307521-10339-1-git-send-email-sahlberg@google.com> (raw)
This patch series adds support for using transactions and atomic renames.
It focuses on what needs to be done in order to support fully atomic
and rollbackable renames that may or may not involve name conflicts.
By performing the actual delete old/create new via a single operation to
the packed refs file this process will also appear as an atomic change for
any external observers.
(While this series is "short" it contains a very important change where
we start performing ref changes as operations inside a locked packed refs
file instead of as discreete operations of loose ref files.
This approach will be extended in the next patch series where we will start
using it also to make multi-ref creations/updates become fully
atomic for external observers.)
This series is built on iand depend on the previous reflog series:
* rs/ref-transaction-reflog (2014-07-23) 15 commits
- refs.c: allow deleting refs with a broken sha1
- refs.c: remove lock_any_ref_for_update
- refs.c: make unlock_ref/close_ref/commit_ref static
- refs.c: rename log_ref_setup to create_reflog
- reflog.c: use a reflog transaction when writing during expire
- refs.c: allow multiple reflog updates during a single transaction
- refs.c: only write reflog update if msg is non-NULL
- refs.c: add a flag to allow reflog updates to truncate the log
- refs.c: add a transaction function to append a reflog entry
- lockfile.c: make hold_lock_file_for_append preserve meaningful errno
- refs.c: add a function to append a reflog entry to a fd
- refs.c: add a new update_type field to ref_update
- refs.c: rename the transaction functions
- refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
- refs.c: make ref_transaction_create a wrapper to ref_transaction_update
(this branch uses rs/ref-transaction and rs/ref-transaction-1.)
Ronnie Sahlberg (5):
refs.c: allow passing raw git_committer_info as email to
_update_reflog
refs.c: return error instead of dying when locking fails during
transaction
refs.c: use packed refs when deleting refs during a transaction
refs.c: update rename_ref to use a transaction
refs.c: rollback the lockfile before we die() in repack_without_refs
builtin/remote.c | 13 +-
refs.c | 369 +++++++++++++++++++++++++++++-------------------------
refs.h | 1 +
t/t3200-branch.sh | 7 --
4 files changed, 210 insertions(+), 180 deletions(-)
--
2.0.1.508.g763ab16
next reply other threads:[~2014-07-25 16:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-25 16:58 Ronnie Sahlberg [this message]
2014-07-25 16:58 ` [PATCH 1/5] refs.c: allow passing raw git_committer_info as email to _update_reflog Ronnie Sahlberg
2014-07-25 19:37 ` Jonathan Nieder
2014-07-28 18:01 ` Ronnie Sahlberg
2014-07-28 23:39 ` Eric Sunshine
2014-07-25 16:58 ` [PATCH 2/5] refs.c: return error instead of dying when locking fails during transaction Ronnie Sahlberg
2014-07-25 19:40 ` Jonathan Nieder
2014-07-28 19:01 ` Ronnie Sahlberg
2014-07-25 16:58 ` [PATCH 3/5] refs.c: use packed refs when deleting refs during a transaction Ronnie Sahlberg
2014-07-25 19:58 ` Jonathan Nieder
2014-07-25 16:58 ` [PATCH 4/5] refs.c: update rename_ref to use " Ronnie Sahlberg
2014-07-25 20:00 ` Jonathan Nieder
2014-07-25 16:58 ` [PATCH 5/5] refs.c: rollback the lockfile before we die() in repack_without_refs Ronnie Sahlberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1406307521-10339-1-git-send-email-sahlberg@google.com \
--to=sahlberg@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).