This is a re-roll of [1]. This patch series improves the handling of conflicts between references like "refs/foo" and "refs/foo/bar" that are not allowed to co-exist. It also changes some functions in this area to record their error messages in a "struct strbuf *err" argument rather than sometimes emitting errors directly to stderr. Changes relative to v1: * Rebase to master rather than depending on mh/ref-lock-avoid-running-out-of-fds, as did v1. There were no significant dependencies between the two patch series, and now that mh/ref-lock-avoid-running-out-of-fds (now renamed to mh/write-refs-sooner.*) has been backported to 2.2, the dependency makes even less sense. * Fix leak of "reason" string in ref_transaction_commit(). * Fix a broken &&-chain in t1404 and fix the function definition as per Junio's "SQUASH???" commit. Thanks to Stefan, Junio, and Eric for their comments regarding v1. As usual, this patch series is also available from my GitHub repository [2], as branch "check-df-conflicts-earlier". Michael [1] http://thread.gmane.org/gmane.comp.version-control.git/268117 [2] https://github.com/mhagger/git Michael Haggerty (18): t1404: new tests of ref D/F conflicts within transactions is_refname_available(): revamp the comments is_refname_available(): avoid shadowing "dir" variable is_refname_available(): convert local variable "dirname" to strbuf entry_matches(): inline function report_refname_conflict(): inline function struct nonmatching_ref_data: store a refname instead of a ref_entry is_refname_available(): use dirname in first loop ref_transaction_commit(): use a string_list for detecting duplicates refs: check for D/F conflicts among refs created in a transaction verify_refname_available(): rename function verify_refname_available(): report errors via a "struct strbuf *err" lock_ref_sha1_basic(): report errors via a "struct strbuf *err" lock_ref_sha1_basic(): improve diagnostics for ref D/F conflicts rename_ref(): integrate lock_ref_sha1_basic() errors into ours ref_transaction_commit(): provide better error messages ref_transaction_commit(): delete extra "the" from error message reflog_expire(): integrate lock_ref_sha1_basic() errors into ours refs.c | 309 ++++++++++++++++++++++++------------- t/t1400-update-ref.sh | 14 +- t/t1404-update-ref-df-conflicts.sh | 107 +++++++++++++ 3 files changed, 312 insertions(+), 118 deletions(-) create mode 100755 t/t1404-update-ref-df-conflicts.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