The main purpose of this series is to simplify the interface to reference transactions as follows: * Remove the need to supply an explicit have_old parameter to ref_transaction_update() and ref_transaction_delete(). Instead, check the old_sha1 if and only if it is non-NULL. * Allow NULL to be supplied to ref_transaction_update() as new_sha1, in which case old_sha1 will be verified under lock, but the reference's value will not be altered. * Add a function ref_transaction_verify(), which verifies the current value of a reference without changing it. * Make the similarity between ref_transaction_update() and update_ref() more obvious. Along the way, it fixes a race that could happen if two processes try to create an orphan commit at the same time. This patch series applies on top of master merged together with sb/atomic-push, which in turn depends on mh/reflog-expire. It is also available from my GitHub account [1] as branch "refs-have-new": It's nothing earth-shattering, but I think it is a worthwhile cleanup. Michael [1] https://github.com/mhagger/git Michael Haggerty (11): refs: move REF_DELETING to refs.c refs: remove the gap in the REF_* constant values struct ref_update: move "have_old" into "flags" ref_transaction_update(): remove "have_old" parameter ref_transaction_delete(): remove "have_old" parameter commit: add tests of commit races commit: avoid race when creating orphan commits ref_transaction_create(): check that new_sha1 is valid ref_transaction_delete(): check that old_sha1 is not null_sha1 ref_transaction_verify(): new function to check a reference's value update_ref(): improve documentation branch.c | 5 +- builtin/commit.c | 4 +- builtin/fetch.c | 6 ++- builtin/receive-pack.c | 5 +- builtin/replace.c | 2 +- builtin/tag.c | 2 +- builtin/update-ref.c | 17 +++---- fast-import.c | 6 +-- refs.c | 130 +++++++++++++++++++++++++++++++++--------------- refs.h | 61 ++++++++++++++++------- sequencer.c | 2 +- t/t7516-commit-races.sh | 38 ++++++++++++++ walker.c | 2 +- 13 files changed, 197 insertions(+), 83 deletions(-) create mode 100755 t/t7516-commit-races.sh -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html