From: Stefan Beller <sbeller@google.com>
To: git@vger.kernel.org, gitster@pobox.com, mhagger@alum.mit.edu
Cc: Stefan Beller <sbeller@google.com>
Subject: [PATCH v4 00/16] ref-transaction-rename
Date: Mon, 17 Nov 2014 17:44:41 -0800 [thread overview]
Message-ID: <1416275097-3616-1-git-send-email-sbeller@google.com> (raw)
Hi,
This series builds on the previous series : ref-transaction-reflog
as applied to master. This series has been sent to the list before[1]
This series can also be found at github[2] as well as googlesource[3].
This series converts ref rename to use a transaction. This addesses several
issues in the old implementation, such as colliding renames might overwrite
someone elses reflog, and it makes the rename atomic.
As part of the series we also move changes that cover multiple refs to happen
as an atomic transaction/rename to the pacekd refs file. This makes it possible
to have both the rename case (one deleted ref + one created ref) as well
as any operation that updates multiple refs to become one atomic rename()
applied to the packed refs file. Thus all such changes are now also atomic
to all external observers.
Thanks,
Stefan
Version 2:
- Changed to not use potentially iterators to copy the reflog entries one
by one. Instead adding two new functions. One to read an existing reflog
as one big blob, and a second function to, in a transaction, write a new
complete reflog from said blob.
The idea is that each future reflog backend will provide optimized
versions for these "read whole reflog" "write whole reflog" functions.
Version 3:
- Rename and redo the API for updating a whole reflog in one single operation
to transaction_rename_reflog()
Version 4:
* As Ronnie announced to change employers soon, he'll have only limited
time to work on git in the near future. As this is a rather large patch
series, he is handing this work over to me. That's why I'm sending the
patches this time.
[1] http://www.spinics.net/lists/git/msg241352.html
[2] https://github.com/stefanbeller/git/tree/ref-transactions-rename
[3] https://code-review.googlesource.com/#/q/topic:ref-transaction-rename
Ronnie Sahlberg (16):
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: use a stringlist for repack_without_refs
refs.c: add transaction support for renaming a reflog
refs.c: update rename_ref to use a transaction
refs.c: rollback the lockfile before we die() in repack_without_refs
refs.c: move reflog updates into its own function
refs.c: write updates to packed refs when a transaction has more than
one ref
remote.c: use a transaction for deleting refs
refs.c: make repack_without_refs static
refs.c: make the *_packed_refs functions static
refs.c: replace the onerr argument in update_ref with a strbuf err
refs.c: make add_packed_ref return an error instead of calling die
refs.c: make lock_packed_refs take an err argument
refs.c: add an err argument to pack_refs
builtin/checkout.c | 7 +-
builtin/clone.c | 36 ++-
builtin/merge.c | 20 +-
builtin/notes.c | 24 +-
builtin/pack-refs.c | 8 +-
builtin/reflog.c | 19 +-
builtin/remote.c | 69 +++---
builtin/reset.c | 12 +-
builtin/update-ref.c | 7 +-
notes-cache.c | 2 +-
notes-utils.c | 5 +-
refs.c | 616 ++++++++++++++++++++++++++++++--------------------
refs.h | 79 +++----
t/t3200-branch.sh | 7 -
t/t5516-fetch-push.sh | 2 +-
transport-helper.c | 7 +-
transport.c | 9 +-
17 files changed, 552 insertions(+), 377 deletions(-)
--
2.2.0.rc2.5.gf7b9fb2
next reply other threads:[~2014-11-18 1:46 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-18 1:44 Stefan Beller [this message]
2014-11-18 1:44 ` [PATCH v4 01/16] refs.c: allow passing raw git_committer_info as email to _update_reflog Stefan Beller
2014-11-18 1:44 ` [PATCH v4 02/16] refs.c: return error instead of dying when locking fails during transaction Stefan Beller
2014-11-18 1:44 ` [PATCH v4 03/16] refs.c: use packed refs when deleting refs during a transaction Stefan Beller
2014-11-18 1:44 ` [PATCH v4 04/16] refs.c: use a stringlist for repack_without_refs Stefan Beller
2014-11-18 1:44 ` [PATCH v4 05/16] refs.c: add transaction support for renaming a reflog Stefan Beller
2014-11-18 1:44 ` [PATCH v4 06/16] refs.c: update rename_ref to use a transaction Stefan Beller
2014-11-18 1:44 ` [PATCH v4 07/16] refs.c: rollback the lockfile before we die() in repack_without_refs Stefan Beller
2014-11-18 1:44 ` [PATCH v4 08/16] refs.c: move reflog updates into its own function Stefan Beller
2014-11-18 1:44 ` [PATCH v4 09/16] refs.c: write updates to packed refs when a transaction has more than one ref Stefan Beller
2014-11-18 1:44 ` [PATCH v4 10/16] remote.c: use a transaction for deleting refs Stefan Beller
2014-11-18 1:44 ` [PATCH v4 11/16] refs.c: make repack_without_refs static Stefan Beller
2014-11-18 1:44 ` [PATCH v4 12/16] refs.c: make the *_packed_refs functions static Stefan Beller
2014-11-18 1:44 ` [PATCH v4 13/16] refs.c: replace the onerr argument in update_ref with a strbuf err Stefan Beller
2014-11-18 1:44 ` [PATCH v4 14/16] refs.c: make add_packed_ref return an error instead of calling die Stefan Beller
2014-11-18 1:44 ` [PATCH v4 15/16] refs.c: make lock_packed_refs take an err argument Stefan Beller
2014-11-18 1:44 ` [PATCH v4 16/16] refs.c: add an err argument to pack_refs Stefan Beller
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=1416275097-3616-1-git-send-email-sbeller@google.com \
--to=sbeller@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
/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).