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
List information: http://vger.kernel.org/majordomo-info.html
* 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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).