On 04/23, Eric Sunshine wrote: > On Sun, Apr 15, 2018 at 4:29 PM, Thomas Gummerer <t.gummerer@xxxxxxxxx> wrote: > > Currently 'git worktree add' produces output like the following: > > > > Preparing ../foo (identifier foo) > > HEAD is now at 26da330922 <title> > > [...] > > Instead of this message, print a message that gives the user a bit more > > detail of what exactly 'git worktree' is doing. There are various dwim > > modes which are perform some magic under the hood, which should be > > helpful to users. Just from the output of the command it is not always > > visible to users what exactly has happened. > > > > Help the users a bit more by modifying the "Preparing ..." message and > > adding some additional information of what 'git worktree add' did under > > the hood, while not displaying the identifier anymore. > > > > Currently this ends up in three different cases: > > > > - 'git worktree add -b ...' or 'git worktree add <path>' [...] > > > > - 'git worktree add -B ...', which may either create a new branch if > > the branch with the given name does not exist yet, or resets an > > existing branch to the current HEAD, or the commit-ish given. > > Depending on which action is taken, we'll end up with the following > > output: > > > > Preparing worktree (resetting branch 'next' (was at caa68db14)) > > HEAD is now at 26da330922 <title> > > The (...) embedded inside another (...) is ugly and hard to read. > Better perhaps: > > Preparing worktree (resetting branch 'next'; was at caa68db14) > > Not necessarily worth a re-roll. It would be nice to see this series > land; perhaps this can be tweaked later. I'll tweak it while fixing the other bit. > > or: > > > > Preparing worktree (new branch '<branch>') > > HEAD is now at 26da330922 <title> > > > > - 'git worktree add --detach' or 'git worktree add <path> <branch>', > > both of which create a new worktree with a detached HEAD, for which > > we will print the following output: > > > > Preparing worktree (detached HEAD 26da330922) > > HEAD is now at 26da330922 <title> > > This is inaccurate, isn't it? Certainly, specifying something like > "origin/floop" for <branch> ends up detached: Ah indeed, this was the case I missed. I thought I managed to go through all of them, but this one slipped through the cracks. Thanks for catching this, will fix in a re-roll. > % git worktree add w1 origin/floop > ... > % git worktree list > /proj fe0a9eaf31 [master] > /proj/w1 b46fe60e1d (detached HEAD) > > but specifying an existing local branch (say "wip") does not end up detached: > > % git worktree add w2 wip > ... > % git worktree list > /proj fe0a9eaf31 [master] > /proj/w1 b46fe60e1d (detached HEAD) > /proj/w2 820ed2a513 [wip] > > > Additionally currently the "Preparing ..." line is printed to stderr, > > while the "HEAD is now at ..." line is printed to stdout by 'git reset > > --hard', which is used internally by 'git worktree add'. Fix this > > inconsistency by printing the "Preparing ..." message to stdout as > > well. As "Preparing ..." is not an error, stdout also seems like the > > more appropriate output stream. > > > > Helped-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> > > Signed-off-by: Thomas Gummerer <t.gummerer@xxxxxxxxx>