From 70999e9ceca47e03b8900bfb310b2f804125811e Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Sun, 27 Mar 2016 23:37:14 +0900 Subject: 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 Signed-off-by: Junio C Hamano --- branch.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'branch.h') diff --git a/branch.h b/branch.h index 78ad4387cd..d69163daf7 100644 --- a/branch.h +++ b/branch.h @@ -60,4 +60,11 @@ extern int read_branch_desc(struct strbuf *, const char *branch_name); */ extern void die_if_checked_out(const char *branch); +/* + * Update all per-worktree HEADs pointing at the old ref to point the new ref. + * This will be used when renaming a branch. Returns 0 if successful, non-zero + * otherwise. + */ +extern int replace_each_worktree_head_symref(const char *oldref, const char *newref); + #endif -- cgit v1.2.3