mirror of
https://github.com/git/git
synced 2024-09-13 13:24:41 +00:00
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
|
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. `-` may also be
|
||||||
|
specified as `<branch>`; it is synonymous with `@{-1}`.
|
||||||
+
|
+
|
||||||
If `<branch>` is omitted and neither `-b` nor `-B` nor `--detached` used,
|
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,
|
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];
|
path = prefix ? prefix_filename(prefix, strlen(prefix), av[0]) : av[0];
|
||||||
branch = ac < 2 ? "HEAD" : av[1];
|
branch = ac < 2 ? "HEAD" : av[1];
|
||||||
|
|
||||||
|
if (!strcmp(branch, "-"))
|
||||||
|
branch = "@{-1}";
|
||||||
|
|
||||||
opts.force_new_branch = !!new_branch_force;
|
opts.force_new_branch = !!new_branch_force;
|
||||||
if (opts.force_new_branch) {
|
if (opts.force_new_branch) {
|
||||||
struct strbuf symref = STRBUF_INIT;
|
struct strbuf symref = STRBUF_INIT;
|
||||||
|
|
|
@ -20,6 +20,22 @@ test_expect_success '"add" an existing empty worktree' '
|
||||||
git worktree add --detach existing_empty master
|
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_expect_success '"add" refuses to checkout locked branch' '
|
||||||
test_must_fail git worktree add zere master &&
|
test_must_fail git worktree add zere master &&
|
||||||
! test -d zere &&
|
! test -d zere &&
|
||||||
|
|
Loading…
Reference in a new issue