mirror of
https://github.com/git/git.git
synced 2024-11-25 02:44:48 +08:00
worktree: add: suppress auto-vivication with --detach and no <branch>
Fix oversight where branch auto-vivication incorrectly kicks in when --detach is specified and <branch> omitted. Instead, treat: git worktree add --detach <path> as shorthand for: git worktree add --detach <path> HEAD Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ab0b2c53ed
commit
5c942570fe
@ -51,9 +51,9 @@ Create `<path>` and checkout `<branch>` into it. The new working directory
|
|||||||
is linked to the current repository, sharing everything except working
|
is linked to the current repository, sharing everything except working
|
||||||
directory specific files such as HEAD, index, etc.
|
directory specific files such as HEAD, index, etc.
|
||||||
+
|
+
|
||||||
If `<branch>` is omitted and neither `-b` nor `-B` is used, then, as a
|
If `<branch>` is omitted and neither `-b` nor `-B` nor `--detached` used,
|
||||||
convenience, a new branch based at HEAD is created automatically, as if
|
then, as a convenience, a new branch based at HEAD is created automatically,
|
||||||
`-b $(basename <path>)` was specified.
|
as if `-b $(basename <path>)` was specified.
|
||||||
|
|
||||||
prune::
|
prune::
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ static int add(int ac, const char **av, const char *prefix)
|
|||||||
if (opts.force_new_branch)
|
if (opts.force_new_branch)
|
||||||
opts.new_branch = new_branch_force;
|
opts.new_branch = new_branch_force;
|
||||||
|
|
||||||
if (ac < 2 && !opts.new_branch) {
|
if (ac < 2 && !opts.new_branch && !opts.detach) {
|
||||||
int n;
|
int n;
|
||||||
const char *s = worktree_basename(path, &n);
|
const char *s = worktree_basename(path, &n);
|
||||||
opts.new_branch = xstrndup(s, n);
|
opts.new_branch = xstrndup(s, n);
|
||||||
|
@ -153,6 +153,14 @@ test_expect_success '"add -b" with <branch> omitted' '
|
|||||||
test_cmp_rev HEAD burble
|
test_cmp_rev HEAD burble
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '"add --detach" with <branch> omitted' '
|
||||||
|
git worktree add --detach fishhook &&
|
||||||
|
git rev-parse HEAD >expected &&
|
||||||
|
git -C fishhook rev-parse HEAD >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
test_must_fail git -C fishhook symbolic-ref HEAD
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '"add" with <branch> omitted' '
|
test_expect_success '"add" with <branch> omitted' '
|
||||||
git worktree add wiffle/bat &&
|
git worktree add wiffle/bat &&
|
||||||
test_cmp_rev HEAD bat
|
test_cmp_rev HEAD bat
|
||||||
@ -167,6 +175,12 @@ test_expect_success '"add" auto-vivify does not clobber existing branch' '
|
|||||||
test_path_is_missing precious
|
test_path_is_missing precious
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '"add" no auto-vivify with --detach and <branch> omitted' '
|
||||||
|
git worktree add --detach mish/mash &&
|
||||||
|
test_must_fail git rev-parse mash -- &&
|
||||||
|
test_must_fail git -C mish/mash symbolic-ref HEAD
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '"add" -b/-B mutually exclusive' '
|
test_expect_success '"add" -b/-B mutually exclusive' '
|
||||||
test_must_fail git worktree add -b poodle -B poodle bamboo master
|
test_must_fail git worktree add -b poodle -B poodle bamboo master
|
||||||
'
|
'
|
||||||
|
Loading…
Reference in New Issue
Block a user