From: Thomas Gummerer <t.gummerer@gmail.com>
To: git@vger.kernel.org
Cc: "Eric Sunshine" <sunshine@sunshineco.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Thomas Gummerer" <t.gummerer@gmail.com>
Subject: [PATCH v5 0/6] worktree: teach "add" to check out existing branches
Date: Sun, 25 Mar 2018 14:49:41 +0100 [thread overview]
Message-ID: <20180325134947.25828-1-t.gummerer@gmail.com> (raw)
In-Reply-To: <20180317222219.4940-1-t.gummerer@gmail.com>
Thanks Eric for the review of the previous round and Duy and Junio for
additional comments.
Previous rounds are at <20180121120208.12760-1-t.gummerer@gmail.com>,
<20180204221305.28300-1-t.gummerer@gmail.com>,
<20180317220830.30963-1-t.gummerer@gmail.com> and
<20180317222219.4940-1-t.gummerer@gmail.com>.
This round should address all of Eric's comments from the previous round.
As explained in more detail in a reply to the review comment directly,
I did not add an enum to 'struct add_opts', for 'force_new_branch' and
'checkout_existing_branch', but instead removed 'force_new_branch'
from the struct as it's not required.
The rest of the updates are mainly in the user facing messages,
documentation and one added test.
Interdiff below:
diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
index 98731b71a7..eaa6bf713f 100644
--- a/Documentation/git-worktree.txt
+++ b/Documentation/git-worktree.txt
@@ -67,7 +67,7 @@ doesn't exist, a new branch based on HEAD is automatically created as
if `-b <branch>` was given. If `<branch>` exists in the repository,
it will be checked out in the new worktree, if it's not checked out
anywhere else, otherwise the command will refuse to create the
-worktree.
+worktree (unless `--force` is used).
list::
diff --git a/builtin/worktree.c b/builtin/worktree.c
index df5c0427ba..895838b943 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -28,7 +28,6 @@ struct add_opts {
int checkout;
int keep_locked;
const char *new_branch;
- int force_new_branch;
int checkout_existing_branch;
};
@@ -320,12 +319,12 @@ static int add_worktree(const char *path, const char *refname,
goto done;
if (opts->checkout_existing_branch)
- fprintf(stderr, _("checking out branch '%s'"),
- refname);
+ fprintf_ln(stderr, _("checking out branch '%s'"),
+ refname);
else if (opts->new_branch)
- fprintf(stderr, _("creating branch '%s'"), opts->new_branch);
+ fprintf_ln(stderr, _("creating branch '%s'"), opts->new_branch);
- fprintf(stderr, _("worktree HEAD is now at %s"),
+ fprintf(stderr, _("new worktree HEAD is now at %s"),
find_unique_abbrev(commit->object.oid.hash, DEFAULT_ABBREV));
strbuf_reset(&sb);
@@ -434,8 +433,7 @@ static int add(int ac, const char **av, const char *prefix)
if (!strcmp(branch, "-"))
branch = "@{-1}";
- opts.force_new_branch = !!new_branch_force;
- if (opts.force_new_branch) {
+ if (new_branch_force) {
struct strbuf symref = STRBUF_INIT;
opts.new_branch = new_branch_force;
@@ -472,7 +470,7 @@ static int add(int ac, const char **av, const char *prefix)
struct child_process cp = CHILD_PROCESS_INIT;
cp.git_cmd = 1;
argv_array_push(&cp.args, "branch");
- if (opts.force_new_branch)
+ if (new_branch_force)
argv_array_push(&cp.args, "--force");
argv_array_push(&cp.args, opts.new_branch);
argv_array_push(&cp.args, branch);
diff --git a/t/t2025-worktree-add.sh b/t/t2025-worktree-add.sh
index 721b0e4c26..fb99f4c46f 100755
--- a/t/t2025-worktree-add.sh
+++ b/t/t2025-worktree-add.sh
@@ -198,15 +198,15 @@ test_expect_success '"add" with <branch> omitted' '
test_cmp_rev HEAD bat
'
-test_expect_success '"add" auto-vivify checks out existing branch' '
+test_expect_success '"add" checks out existing branch of dwimd name' '
test_commit c1 &&
test_commit c2 &&
- git branch precious HEAD~1 &&
- git worktree add precious &&
- test_cmp_rev HEAD~1 precious &&
+ git branch dwim HEAD~1 &&
+ git worktree add dwim &&
+ test_cmp_rev HEAD~1 dwim &&
(
- cd precious &&
- test_cmp_rev precious HEAD
+ cd dwim &&
+ test_cmp_rev dwim HEAD
)
'
@@ -216,6 +216,10 @@ test_expect_success '"add" auto-vivify fails with checked out branch' '
test_path_is_missing test-branch
'
+test_expect_success '"add --force" with existing dwimd name doesnt die' '
+ git worktree add --force test-branch
+'
+
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 -- &&
Thomas Gummerer (6):
worktree: improve message when creating a new worktree
worktree: be clearer when "add" dwim-ery kicks in
worktree: remove force_new_branch from struct add_opts
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
t2025: rename now outdated branch name
Documentation/git-worktree.txt | 9 ++++--
builtin/worktree.c | 64 +++++++++++++++++++++++++++++++-----------
t/t2025-worktree-add.sh | 23 +++++++++++----
3 files changed, 72 insertions(+), 24 deletions(-)
--
2.16.1.77.g8685934aa2
next prev parent reply other threads:[~2018-03-25 13:46 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-21 12:02 [PATCH] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-01-21 12:02 ` Robert P. J. Day
2018-01-22 11:18 ` Duy Nguyen
2018-01-22 20:17 ` Thomas Gummerer
2018-02-04 22:13 ` [PATCH v2 0/3] " Thomas Gummerer
2018-02-04 22:13 ` [PATCH v2 1/3] worktree: improve message when creating a new worktree Thomas Gummerer
2018-02-05 2:12 ` Duy Nguyen
2018-02-05 20:13 ` Thomas Gummerer
2018-02-05 20:15 ` Junio C Hamano
2018-02-07 8:51 ` Eric Sunshine
2018-02-09 11:27 ` Thomas Gummerer
2018-02-09 12:08 ` Duy Nguyen
2018-02-10 11:20 ` Duy Nguyen
2018-02-04 22:13 ` [PATCH v2 2/3] worktree: be clearer when "add" dwim-ery kicks in Thomas Gummerer
2018-02-04 22:13 ` [PATCH v2 3/3] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-02-05 2:18 ` Duy Nguyen
2018-02-05 20:20 ` Junio C Hamano
2018-02-05 20:23 ` Thomas Gummerer
2018-02-06 11:53 ` Duy Nguyen
2018-02-09 11:04 ` Thomas Gummerer
2018-03-17 22:08 ` [PATCH v3 0/4] " Thomas Gummerer
2018-03-17 22:08 ` [PATCH v3 1/4] worktree: improve message when creating a new worktree Thomas Gummerer
2018-03-17 22:08 ` [PATCH v3 2/4] worktree: be clearer when "add" dwim-ery kicks in Thomas Gummerer
2018-03-17 22:08 ` [PATCH v3 3/4] worktree: factor out dwim_branch function Thomas Gummerer
2018-03-17 22:08 ` [PATCH v3 4/4] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-03-17 22:22 ` [PATCH v4 0/4] " Thomas Gummerer
2018-03-17 22:22 ` [PATCH v4 1/4] worktree: improve message when creating a new worktree Thomas Gummerer
2018-03-19 17:11 ` Duy Nguyen
2018-03-19 18:09 ` Junio C Hamano
2018-03-20 6:37 ` Eric Sunshine
2018-03-24 20:34 ` Thomas Gummerer
2018-03-17 22:22 ` [PATCH v4 2/4] worktree: be clearer when "add" dwim-ery kicks in Thomas Gummerer
2018-03-20 6:40 ` Eric Sunshine
2018-03-20 7:26 ` Eric Sunshine
2018-03-20 7:32 ` Eric Sunshine
2018-03-24 20:35 ` Thomas Gummerer
2018-03-17 22:22 ` [PATCH v4 3/4] worktree: factor out dwim_branch function Thomas Gummerer
2018-03-17 22:22 ` [PATCH v4 4/4] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-03-20 8:02 ` Eric Sunshine
2018-03-24 21:00 ` Thomas Gummerer
2018-03-25 13:49 ` Thomas Gummerer [this message]
2018-03-25 13:49 ` [PATCH v5 1/6] worktree: improve message when creating a new worktree Thomas Gummerer
2018-03-25 13:49 ` [PATCH v5 2/6] worktree: be clearer when "add" dwim-ery kicks in Thomas Gummerer
2018-03-27 8:59 ` Eric Sunshine
2018-03-30 13:53 ` Thomas Gummerer
2018-03-25 13:49 ` [PATCH v5 3/6] worktree: remove force_new_branch from struct add_opts Thomas Gummerer
2018-03-27 9:00 ` Eric Sunshine
2018-03-30 13:55 ` Thomas Gummerer
2018-03-25 13:49 ` [PATCH v5 4/6] worktree: factor out dwim_branch function Thomas Gummerer
2018-03-27 9:01 ` Eric Sunshine
2018-03-25 13:49 ` [PATCH v5 5/6] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-03-27 9:04 ` Eric Sunshine
2018-03-30 14:04 ` Thomas Gummerer
2018-03-25 13:49 ` [PATCH v5 6/6] t2025: rename now outdated branch name Thomas Gummerer
2018-03-27 8:58 ` [PATCH v5 0/6] worktree: teach "add" to check out existing branches Eric Sunshine
2018-03-30 14:08 ` Thomas Gummerer
2018-03-31 15:17 ` [PATCH v6 " Thomas Gummerer
2018-03-31 15:17 ` [PATCH v6 1/6] worktree: remove extra members from struct add_opts Thomas Gummerer
2018-03-31 15:18 ` [PATCH v6 2/6] reset: introduce show-new-head-line option Thomas Gummerer
2018-04-02 20:29 ` Junio C Hamano
2018-04-02 22:07 ` Thomas Gummerer
2018-04-02 22:20 ` Thomas Gummerer
2018-04-02 20:34 ` Junio C Hamano
2018-04-02 22:09 ` Thomas Gummerer
2018-03-31 15:18 ` [PATCH v6 3/6] worktree: improve message when creating a new worktree Thomas Gummerer
2018-04-08 9:27 ` Eric Sunshine
2018-03-31 15:18 ` [PATCH v6 4/6] worktree: be clearer when "add" dwim-ery kicks in Thomas Gummerer
2018-03-31 15:18 ` [PATCH v6 5/6] worktree: factor out dwim_branch function Thomas Gummerer
2018-03-31 15:18 ` [PATCH v6 6/6] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-04-01 13:11 ` [PATCH v6 6.5/6] fixup! " Thomas Gummerer
2018-04-09 0:23 ` Eric Sunshine
2018-04-09 19:44 ` Thomas Gummerer
2018-04-09 21:35 ` Eric Sunshine
2018-04-08 10:09 ` [PATCH v6 6/6] " Eric Sunshine
2018-04-08 14:30 ` Thomas Gummerer
2018-04-08 9:08 ` [PATCH v6 0/6] " Eric Sunshine
2018-04-08 14:24 ` Thomas Gummerer
2018-04-09 0:38 ` Eric Sunshine
2018-04-09 19:47 ` Thomas Gummerer
2018-04-09 19:30 ` Thomas Gummerer
2018-04-09 22:06 ` Eric Sunshine
2018-04-11 20:09 ` Thomas Gummerer
2018-04-11 20:48 ` Eric Sunshine
2018-04-11 20:50 ` Thomas Gummerer
2018-04-11 21:14 ` Eric Sunshine
2018-04-15 20:29 ` [PATCH v7 0/4] " Thomas Gummerer
2018-04-15 20:29 ` [PATCH v7 1/4] worktree: remove extra members from struct add_opts Thomas Gummerer
2018-04-15 20:29 ` [PATCH v7 2/4] worktree: improve message when creating a new worktree Thomas Gummerer
2018-04-16 2:09 ` Junio C Hamano
2018-04-23 18:55 ` Thomas Gummerer
2018-04-23 4:27 ` Eric Sunshine
2018-04-23 18:50 ` Thomas Gummerer
2018-04-15 20:29 ` [PATCH v7 3/4] worktree: factor out dwim_branch function Thomas Gummerer
2018-04-15 20:29 ` [PATCH v7 4/4] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-04-23 4:52 ` [PATCH v7 0/4] " Eric Sunshine
2018-04-23 19:38 ` [PATCH v8 " Thomas Gummerer
2018-04-23 19:38 ` [PATCH v8 1/4] worktree: remove extra members from struct add_opts Thomas Gummerer
2018-04-24 3:26 ` Eric Sunshine
2018-04-23 19:38 ` [PATCH v8 2/4] worktree: improve message when creating a new worktree Thomas Gummerer
2018-04-24 3:58 ` Eric Sunshine
2018-04-23 19:38 ` [PATCH v8 3/4] worktree: factor out dwim_branch function Thomas Gummerer
2018-04-23 19:38 ` [PATCH v8 4/4] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-04-24 4:25 ` Eric Sunshine
2018-04-24 21:56 ` [PATCH v9 0/4] " Thomas Gummerer
2018-04-24 21:56 ` [PATCH v9 1/4] worktree: remove extra members from struct add_opts Thomas Gummerer
2018-04-24 21:56 ` [PATCH v9 2/4] worktree: improve message when creating a new worktree Thomas Gummerer
2018-04-24 21:56 ` [PATCH v9 3/4] worktree: factor out dwim_branch function Thomas Gummerer
2018-04-24 21:56 ` [PATCH v9 4/4] worktree: teach "add" to check out existing branches Thomas Gummerer
2018-04-27 7:36 ` [PATCH v9 0/4] " Eric Sunshine
2018-04-28 16:09 ` Thomas Gummerer
2018-04-30 0:07 ` Junio C Hamano
2018-03-18 0:24 ` [PATCH v3 " Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180325134947.25828-1-t.gummerer@gmail.com \
--to=t.gummerer@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.