Skip to content

Commit a9be29c

Browse files
dschogitster
authored andcommitted
sequencer: make refs generated by the label command worktree-local
This allows for rebases to be run in parallel in separate worktrees (think: interrupted in the middle of one rebase, being asked to perform a different rebase, adding a separate worktree just for that job). Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 2429335 commit a9be29c

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

refs.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,8 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log)
600600
static int is_per_worktree_ref(const char *refname)
601601
{
602602
return !strcmp(refname, "HEAD") ||
603-
starts_with(refname, "refs/bisect/");
603+
starts_with(refname, "refs/bisect/") ||
604+
starts_with(refname, "refs/rewritten/");
604605
}
605606

606607
static int is_pseudoref_syntax(const char *refname)

t/t3430-rebase-merges.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,18 @@ test_expect_success 'with a branch tip that was cherry-picked already' '
176176
EOF
177177
'
178178

179+
test_expect_success 'refs/rewritten/* is worktree-local' '
180+
git worktree add wt &&
181+
cat >wt/script-from-scratch <<-\EOF &&
182+
label xyz
183+
exec GIT_DIR=../.git git rev-parse --verify refs/rewritten/xyz >a || :
184+
exec git rev-parse --verify refs/rewritten/xyz >b
185+
EOF
186+
187+
test_config -C wt sequence.editor \""$PWD"/replace-editor.sh\" &&
188+
git -C wt rebase -i HEAD &&
189+
test_must_be_empty wt/a &&
190+
test_cmp_rev HEAD "$(cat wt/b)"
191+
'
192+
179193
test_done

0 commit comments

Comments
 (0)