List, Jun,

This is the next patch series for ref-transactions.
It is also available at

and is the same patch series that has been posted previously with one
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

This series is based on and builds on the previous series that is now in
commit c52f85eb59d26a7036d2149bc5b4347d0ecbbbeb
Merge: 44fc7ba 282edb2
Author: Junio C Hamano <>
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 
      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
  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 sha1

 branch.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(-)


To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to