[PATCH 00/15] ref-transactions for reflogs
- From
Ronnie Sahlberg <sahlberg@google.com>
- Date
- Jul 23, 2014, 17:03 UTC
- Message-ID
- <1406135035-26441-1-git-send-email-sahlberg@google.com>
List, Jun,
This is the next patch series for ref-transactions. It is also available at
https://github.com/rsahlberg/git/tree/ref-transactions-reflog
and is the same patch series that has been posted previously with one exception: This series now contains an additional patch that fixes ref handling of broken refs. This patch allows a user to delete a ref that can not be resolved and contains a broken SHA1.
The main part of the patch series is to refactor the reflog handling to use transactions and eventually leads up to : * only a single place in the code where we marshall the reflog text line * atomic transaction for reflog.c for performing the reflog expire operation.
This series is based on and builds on the previous series that is now in origin/pu: === commit c52f85eb59d26a7036d2149bc5b4347d0ecbbbeb Merge: 44fc7ba 282edb2 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Jul 21 12:35:51 2014 -0700
Merge branch 'rs/ref-transaction' into jch
* rs/ref-transaction:
refs.c: fix handling of badly named refs
refs.c: make write_ref_sha1 static
fetch.c: change s_update_ref to use a ref transaction
refs.c: propagate any errno==ENOTDIR from _commit back to the callers
refs.c: pass a skip list to name_conflict_fn
refs.c: call lock_ref_sha1_basic directly from commit
refs.c: move the check for valid refname to lock_ref_sha1_basic
refs.c: pass NULL as *flags to read_ref_full
refs.c: pass the ref log message to _create/delete/update instead of _commit
refs.c: add an err argument to delete_ref_loose
wrapper.c: add a new function unlink_or_msg
wrapper.c: simplify warn_if_unremovable
===
Ronnie Sahlberg (15):
refs.c make ref_transaction_create a wrapper to ref_transaction_update
refs.c: make ref_transaction_delete a wrapper for
ref_transaction_update
refs.c: rename the transaction functions
refs.c: add a new update_type field to ref_update
refs.c: add a function to append a reflog entry to a fd
lockfile.c: make hold_lock_file_for_append preserve meaningful errno
refs.c: add a transaction function to append a reflog entry
refs.c: add a flag to allow reflog updates to truncate the log
refs.c: only write reflog update if msg is non-NULL
refs.c: allow multiple reflog updates during a single transaction
reflog.c: use a reflog transaction when writing during expire
refs.c: rename log_ref_setup to create_reflog
refs.c: make unlock_ref/close_ref/commit_ref static
refs.c: remove lock_any_ref_for_update
refs.c: allow deleting refs with a broken sha1branch.c | 11 +- builtin/branch.c | 6 +- builtin/checkout.c | 8 +- builtin/commit.c | 14 +- builtin/fetch.c | 12 +- builtin/receive-pack.c | 14 +- builtin/reflog.c | 84 +++++------ builtin/replace.c | 10 +- builtin/tag.c | 10 +- builtin/update-ref.c | 22 +-- copy.c | 20 ++- fast-import.c | 22 +-- lockfile.c | 7 +- refs.c | 392 ++++++++++++++++++++++++++++++++++--------------- refs.h | 110 +++++++------- sequencer.c | 14 +- walker.c | 16 +- 17 files changed, 461 insertions(+), 311 deletions(-)
-- 2.0.1.508.g763ab16