Merge branch 'jg/dash-is-last-branch-in-worktree-add'
"git worktree add" learned that '-' can be used as a short-hand for "@{-1}", the previous branch. * jg/dash-is-last-branch-in-worktree-add: worktree: allow "-" short-hand for @{-1} in add command
This commit is contained in:
commit
6d41eb685a
@ -48,7 +48,8 @@ add <path> [<branch>]::
|
||||
|
||||
Create `<path>` and checkout `<branch>` into it. The new working directory
|
||||
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. `-` may also be
|
||||
specified as `<branch>`; it is synonymous with `@{-1}`.
|
||||
+
|
||||
If `<branch>` is omitted and neither `-b` nor `-B` nor `--detached` used,
|
||||
then, as a convenience, a new branch based at HEAD is created automatically,
|
||||
|
@ -340,6 +340,9 @@ static int add(int ac, const char **av, const char *prefix)
|
||||
path = prefix ? prefix_filename(prefix, strlen(prefix), av[0]) : av[0];
|
||||
branch = ac < 2 ? "HEAD" : av[1];
|
||||
|
||||
if (!strcmp(branch, "-"))
|
||||
branch = "@{-1}";
|
||||
|
||||
opts.force_new_branch = !!new_branch_force;
|
||||
if (opts.force_new_branch) {
|
||||
struct strbuf symref = STRBUF_INIT;
|
||||
|
@ -20,6 +20,22 @@ test_expect_success '"add" an existing empty worktree' '
|
||||
git worktree add --detach existing_empty master
|
||||
'
|
||||
|
||||
test_expect_success '"add" using shorthand - fails when no previous branch' '
|
||||
test_must_fail git worktree add existing_short -
|
||||
'
|
||||
|
||||
test_expect_success '"add" using - shorthand' '
|
||||
git checkout -b newbranch &&
|
||||
echo hello >myworld &&
|
||||
git add myworld &&
|
||||
git commit -m myworld &&
|
||||
git checkout master &&
|
||||
git worktree add short-hand - &&
|
||||
echo refs/heads/newbranch >expect &&
|
||||
git -C short-hand rev-parse --symbolic-full-name HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success '"add" refuses to checkout locked branch' '
|
||||
test_must_fail git worktree add zere master &&
|
||||
! test -d zere &&
|
||||
|
Loading…
Reference in New Issue
Block a user