Thanks to David, Junio, and Peff for their comments on v1 of this
patch series [1]. I think I have addressed all of the points that were
brought up. Plus I fixed a pre-existing bug that I noticed myself
while adding some more tests; see the first bullet point below for
more information.
Changes between v1 and v2:
* Prefixed the patch series with three new patches that demonstrate
and fix some bugs in reference resolution that I noticed while
inspecting this series:
* "t1404: demonstrate a bug resolving references" -- this
demonstrates a bug that has existed since at least 2.5.0.
* "read_raw_ref(): don't get confused by an empty directory"
* "commit_ref(): if there is an empty dir in the way, delete it"
* Added a patch "read_raw_ref(): move docstring to header file".
* "ref_transaction_create(): disallow recursive pruning": Add a
comment that `REF_ISPRUNING` must only be used with `REF_NODEREF`.
* "refs: don't dereference on rename": explain why we can't pass an
`old_sha1` argument to `delete_ref()`. Inline `resolve_flags`
constant to make the code more transparent.
* "add_update(): initialize the whole ref_update": move some more
checks from `ref_transaction_update()` to `add_update()`.
* "refs: resolve symbolic refs first":
* Remove unused `deleting` parameter from `lock_raw_ref()`
* Fix a comment, add another.
* "lock_ref_sha1_basic(): only handle REF_NODEREF mode": initialize
`ref_name` only once, as its value can be reused.
This patch series is also available from my GitHub repo [2] as branch
"split-under-lock".
[1] http://thread.gmane.org/gmane.comp.version-control.git/292772
[2] https://github.com/mhagger/git
David Turner (2):
refs: allow log-only updates
refs: don't dereference on rename
Michael Haggerty (31):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variable n
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
builtin/branch.c | 19 +-
cache.h | 5 +
dir.h | 23 +
refs.c | 96 ++--
refs/files-backend.c | 909 ++++++++++++++++++++++++++++---------
refs/refs-internal.h | 95 +++-
t/t1400-update-ref.sh | 41 +-
t/t1404-update-ref-df-conflicts.sh | 76 +++-
t/t1430-bad-ref-name.sh | 2 +-
t/t3200-branch.sh | 9 +
10 files changed, 1013 insertions(+), 262 deletions(-)
--
2.8.1
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html