[1/5] Adds RESOLVE_REF_COMMON_DIR to resolve_ref_unsafe(). The second - fourth patch depend on this. At the same time, this allows us to remove reimplementation of resolve_ref_unsafe() in worktree.c: parse_ref(). [2/5] Adds REF_COMMON_DIR flag to lock_ref_sha1_basic(). [3/5] Adds create_symref_common_dir(). Same as create_symref() except it doesn't consider $GIT_DIR. create_symref_common_dir("HEAD", some) always updates .git/HEAD. The next patch uses this. [4/5] Fixes the issue of git branch -m. The behavior when one failed has changed from v1: print an error and continue. % git branch -m oldname newname error: Unable to create '/path/to/.git/worktrees/wt/HEAD.lock': Permission denied error: HEAD of working tree /path/to/wt is not updated. error: Unable to create '/path/to/.git/worktrees/wt2/HEAD.lock': Permission denied error: HEAD of working tree /path/to/wt2 is not updated. fatal: Branch renamed to newname, but HEAD is not updated! [5/5] Fixes an issue of git branch -d, v1 didn't include this. I noticed git branch -d has same issue and this is for it. This patch is unrelated to the above 4 patches, but the cause is same. This can be applied separately. Kazuki Yamaguchi (5): refs: add new flag RESOLVE_REF_COMMON_DIR to resolve_ref_unsafe refs: add REF_COMMON_DIR flag refs: add create_symref_common_dir as a variation of create_symref branch -m: update all per-worktree HEADs branch -d: refuse deleting a branch which is currently checked out branch.c | 32 ++++++++++++++++ branch.h | 7 ++++ builtin/branch.c | 15 ++++---- refs.h | 11 ++++++ refs/files-backend.c | 34 ++++++++++++++--- t/t3200-branch.sh | 29 +++++++++++++- worktree.c | 105 ++++++++++++++++----------------------------------- 7 files changed, 147 insertions(+), 86 deletions(-) -- 2.8.0.rc4.21.g05df949 -- 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