Thanks Eric and Junio for the review the suggestions in the last
round.

Previous rounds are at <20180121120208.12760-1-t.gumme...@gmail.com>,
<20180204221305.28300-1-t.gumme...@gmail.com>,
<20180317220830.30963-1-t.gumme...@gmail.com>,
<20180317222219.4940-1-t.gumme...@gmail.com>,
<20180325134947.25828-1-t.gumme...@gmail.com>,
<20180331151804.30380-1-t.gumme...@gmail.com> and
<20180415202917.4360-1-t.gumme...@gmail.com>.

This round updates the output for "resetting branch ..." to not have
braces embedded inside of another pair of braces, and is not correctly
printing "checking out '<branch>'" when 'git worktree add <path>
<local-branch>' is used.  Both these changes are in patch 2/4, the
other patches are the same as in the previous round.

Interdiff below:

diff --git a/builtin/worktree.c b/builtin/worktree.c
index f5a5283b39..d52495f312 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -353,7 +353,8 @@ static int add_worktree(const char *path, const char 
*refname,
        return ret;
 }
 
-static void print_preparing_worktree_line(const char *branch,
+static void print_preparing_worktree_line(int detach,
+                                         const char *branch,
                                          const char *new_branch,
                                          const char *new_branch_force,
                                          int checkout_existing_branch)
@@ -365,19 +366,27 @@ static void print_preparing_worktree_line(const char 
*branch,
                if (!commit)
                        printf_ln(_("Preparing worktree (new branch '%s')"), 
new_branch_force);
                else
-                       printf_ln(_("Preparing worktree (resetting branch '%s' 
(was at %s))"),
+                       printf_ln(_("Preparing worktree (resetting branch '%s'; 
was at %s)"),
                                  new_branch_force,
                                  find_unique_abbrev(commit->object.oid.hash,
                                                     DEFAULT_ABBREV));
        } else if (new_branch) {
                printf_ln(_("Preparing worktree (new branch '%s')"), 
new_branch);
        } else {
-               struct commit *commit = lookup_commit_reference_by_name(branch);
-               if (!commit)
-                       die(_("invalid reference: %s"), branch);
-               printf_ln(_("Preparing worktree (detached HEAD %s)"),
-                         find_unique_abbrev(commit->object.oid.hash,
-                                            DEFAULT_ABBREV));
+               struct strbuf s = STRBUF_INIT;
+               if (!detach && !strbuf_check_branch_ref(&s, branch) &&
+                   ref_exists(s.buf))
+                       printf_ln(_("Preparing worktree (checking out '%s')"),
+                                 branch);
+               else {
+                       struct commit *commit = 
lookup_commit_reference_by_name(branch);
+                       if (!commit)
+                               die(_("invalid reference: %s"), branch);
+                       printf_ln(_("Preparing worktree (detached HEAD %s)"),
+                                 find_unique_abbrev(commit->object.oid.hash,
+                                                    DEFAULT_ABBREV));
+               }
+               strbuf_release(&s);
        }
 }
 
@@ -481,7 +490,7 @@ static int add(int ac, const char **av, const char *prefix)
                }
        }
 
-       print_preparing_worktree_line(branch, new_branch, new_branch_force,
+       print_preparing_worktree_line(opts.detach, branch, new_branch, 
new_branch_force,
                                      checkout_existing_branch);
 
        if (new_branch) {

Thomas Gummerer (4):
  worktree: remove extra members from struct add_opts
  worktree: improve message when creating a new worktree
  worktree: factor out dwim_branch function
  worktree: teach "add" to check out existing branches

 Documentation/git-worktree.txt |   9 +++-
 builtin/worktree.c             | 111 +++++++++++++++++++++++++++++++----------
 t/t2025-worktree-add.sh        |  26 +++++++---
 3 files changed, 110 insertions(+), 36 deletions(-)

-- 
2.16.1.74.g7afd1c25cc.dirty

Reply via email to