diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-03-27 23:37:14 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-04-04 12:57:22 -0700 |
commit | 70999e9ceca47e03b8900bfb310b2f804125811e (patch) | |
tree | 8a1b8017985cb7def44f282dfde91844102c8e45 /builtin/branch.c | |
parent | refs: add a new function set_worktree_head_symref (diff) | |
download | tgif-70999e9ceca47e03b8900bfb310b2f804125811e.tar.xz |
branch -m: update all per-worktree HEADs
When renaming a branch, currently only the HEAD of current working tree
is updated, but it must update HEADs of all working trees which point at
the old branch.
This is the current behavior, /path/to/wt's HEAD is not updated:
% git worktree list
/path/to 2c3c5f2 [master]
/path/to/wt 2c3c5f2 [oldname]
% git branch -m master master2
% git worktree list
/path/to 2c3c5f2 [master2]
/path/to/wt 2c3c5f2 [oldname]
% git branch -m oldname newname
% git worktree list
/path/to 2c3c5f2 [master2]
/path/to/wt 0000000 [oldname]
This patch fixes this issue by updating all relevant worktree HEADs
when renaming a branch.
Signed-off-by: Kazuki Yamaguchi <k@rhe.jp>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/branch.c')
-rw-r--r-- | builtin/branch.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/builtin/branch.c b/builtin/branch.c index 7b45b6bd6b..b173831317 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -552,8 +552,7 @@ static void rename_branch(const char *oldname, const char *newname, int force) if (recovery) warning(_("Renamed a misnamed branch '%s' away"), oldref.buf + 11); - /* no need to pass logmsg here as HEAD didn't really move */ - if (!strcmp(oldname, head) && create_symref("HEAD", newref.buf, NULL)) + if (replace_each_worktree_head_symref(oldref.buf, newref.buf)) die(_("Branch renamed to %s, but HEAD is not updated!"), newname); strbuf_addf(&oldsection, "branch.%s", oldref.buf + 11); |