[PATCH v2 0/5] branch: fix branch operations with multiple working trees
- From
Kazuki Yamaguchi <k@rhe.jp>
- Date
- Mar 25, 2016, 18:28 UTC
- Message-ID
- <cover.1458927521.git.k@rhe.jp>
- In-Reply-To
- <1458553816-29091-1-git-send-email-k@rhe.jp>
[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