[PATCH v9 0/4] worktree: teach "add" to check out existing branches

2018-04-24 Thread Thomas Gummerer
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>,
<2018031719.4940-1-t.gumme...@gmail.com>,
<20180325134947.25828-1-t.gumme...@gmail.com>,
<20180331151804.30380-1-t.gumme...@gmail.com>,
<20180415202917.4360-1-t.gumme...@gmail.com> and
<20180423193848.5159-1-t.gumme...@gmail.com>.

Thanks Eric for the review and the suggestions on the previous round.

Changes since the previous round:

- UNLEAK new_branch after it was xstrndup'd
- update the commit message of 2/4 according to Eric's suggestions
- make force_new_branch a boolean flag in
  print_preparing_worktree_line, instead of using it as the branch
  name.  Instead use new_branch as the new branch name everywhere in
  that function.
- get rid of the ckeckout_existing_branch flag

Interdiff below:

diff --git a/builtin/worktree.c b/builtin/worktree.c
index d52495f312..d3aeb4877d 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -356,18 +356,15 @@ static int add_worktree(const char *path, const char 
*refname,
 static void print_preparing_worktree_line(int detach,
  const char *branch,
  const char *new_branch,
- const char *new_branch_force,
- int checkout_existing_branch)
+ int force_new_branch)
 {
-   if (checkout_existing_branch) {
-   printf_ln(_("Preparing worktree (checking out '%s')"), branch);
-   } else if (new_branch_force) {
-   struct commit *commit = 
lookup_commit_reference_by_name(new_branch_force);
+   if (force_new_branch) {
+   struct commit *commit = 
lookup_commit_reference_by_name(new_branch);
if (!commit)
-   printf_ln(_("Preparing worktree (new branch '%s')"), 
new_branch_force);
+   printf_ln(_("Preparing worktree (new branch '%s')"), 
new_branch);
else
printf_ln(_("Preparing worktree (resetting branch '%s'; 
was at %s)"),
- new_branch_force,
+ new_branch,
  find_unique_abbrev(commit->object.oid.hash,
 DEFAULT_ABBREV));
} else if (new_branch) {
@@ -390,19 +387,17 @@ static void print_preparing_worktree_line(int detach,
}
 }
 
-static const char *dwim_branch(const char *path, const char **new_branch,
-  int *checkout_existing_branch)
+static const char *dwim_branch(const char *path, const char **new_branch)
 {
int n;
const char *s = worktree_basename(path, &n);
const char *branchname = xstrndup(s, n);
struct strbuf ref = STRBUF_INIT;
 
+   UNLEAK(branchname);
if (!strbuf_check_branch_ref(&ref, branchname) &&
ref_exists(ref.buf)) {
-   *checkout_existing_branch = 1;
strbuf_release(&ref);
-   UNLEAK(branchname);
return branchname;
}
 
@@ -421,7 +416,6 @@ static int add(int ac, const char **av, const char *prefix)
struct add_opts opts;
const char *new_branch_force = NULL;
char *path;
-   int checkout_existing_branch = 0;
const char *branch;
const char *new_branch = NULL;
const char *opt_track = NULL;
@@ -469,8 +463,7 @@ static int add(int ac, const char **av, const char *prefix)
}
 
if (ac < 2 && !new_branch && !opts.detach) {
-   const char *s = dwim_branch(path, &new_branch,
-   &checkout_existing_branch);
+   const char *s = dwim_branch(path, &new_branch);
if (s)
branch = s;
}
@@ -490,8 +483,7 @@ static int add(int ac, const char **av, const char *prefix)
}
}
 
-   print_preparing_worktree_line(opts.detach, branch, new_branch, 
new_branch_force,
- checkout_existing_branch);
+   print_preparing_worktree_line(opts.detach, branch, new_branch, 
!!new_branch_force);
 
if (new_branch) {
struct child_process cp = CHILD_PROCESS_INIT;

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 | 103 ++---
 t/t2025-worktree-add.sh|  26 ---
 3 files changed, 102 insertions(+), 36 deletions(-)

-- 
2.16.1.74.g7afd1c25cc.dirty



Re: [PATCH v9 0/4] worktree: teach "add" to check out existing branches

2018-04-27 Thread Eric Sunshine
On Tue, Apr 24, 2018 at 5:56 PM, Thomas Gummerer  wrote:
> Thanks Eric for the review and the suggestions on the previous round.
>
> Changes since the previous round:
>
> - UNLEAK new_branch after it was xstrndup'd
> - update the commit message of 2/4 according to Eric's suggestions
> - make force_new_branch a boolean flag in
>   print_preparing_worktree_line, instead of using it as the branch
>   name.  Instead use new_branch as the new branch name everywhere in
>   that function.
> - get rid of the ckeckout_existing_branch flag

Thanks. I did another full review of all the patches and played around
with the new functionality again for good measure. Everything looked
good, and I think the patches are now ready to graduate.

For what it's worth, the entire series is:

Reviewed-by: Eric Sunshine 


Re: [PATCH v9 0/4] worktree: teach "add" to check out existing branches

2018-04-28 Thread Thomas Gummerer
On 04/27, Eric Sunshine wrote:
> On Tue, Apr 24, 2018 at 5:56 PM, Thomas Gummerer  wrote:
> > Thanks Eric for the review and the suggestions on the previous round.
> >
> > Changes since the previous round:
> >
> > - UNLEAK new_branch after it was xstrndup'd
> > - update the commit message of 2/4 according to Eric's suggestions
> > - make force_new_branch a boolean flag in
> >   print_preparing_worktree_line, instead of using it as the branch
> >   name.  Instead use new_branch as the new branch name everywhere in
> >   that function.
> > - get rid of the ckeckout_existing_branch flag
> 
> Thanks. I did another full review of all the patches and played around
> with the new functionality again for good measure. Everything looked
> good, and I think the patches are now ready to graduate.

Thanks for all your review work on this series!

> For what it's worth, the entire series is:
> 
> Reviewed-by: Eric Sunshine 


Re: [PATCH v9 0/4] worktree: teach "add" to check out existing branches

2018-04-29 Thread Junio C Hamano
Thomas Gummerer  writes:

> On 04/27, Eric Sunshine wrote:
>> On Tue, Apr 24, 2018 at 5:56 PM, Thomas Gummerer  
>> wrote:
>> > Thanks Eric for the review and the suggestions on the previous round.
>> >
>> > Changes since the previous round:
>> >
>> > - UNLEAK new_branch after it was xstrndup'd
>> > - update the commit message of 2/4 according to Eric's suggestions
>> > - make force_new_branch a boolean flag in
>> >   print_preparing_worktree_line, instead of using it as the branch
>> >   name.  Instead use new_branch as the new branch name everywhere in
>> >   that function.
>> > - get rid of the ckeckout_existing_branch flag
>> 
>> Thanks. I did another full review of all the patches and played around
>> with the new functionality again for good measure. Everything looked
>> good, and I think the patches are now ready to graduate.
>
> Thanks for all your review work on this series!

Thanks, both.