Subject: Re: [PATCH] Documentation/git-checkout: make doc. of checkout <tree-ish> clearer

From: Christoph Michelbach <[email-masked]>
Date: Sun, 16 Apr 2017 15:01:58 +0200

On Sun, 2017-04-16 at 00:28 +0100, Philip Oakley wrote:
> From: "Christoph Michelbach" <[email-masked]>
> > 
> > While technically in the documentation, the fact that changes
> > introduced by a checkout <tree-ish> are staged automatically, was
> > not obvious when reading its documentation. It is now specifically
> > pointed out.
> > 
> > Signed-off-by: Christoph Michelbach <[email-masked]>
> > ---
> > Documentation/git-checkout.txt | 7 ++++---
> > 1 file changed, 4 insertions(+), 3 deletions(-)
> > 
> > diff --git a/Documentation/git-checkout.txt 
> > b/Documentation/git-checkout.txt
> > index 8e2c066..cfd7b18 100644
> > --- a/Documentation/git-checkout.txt
> > +++ b/Documentation/git-checkout.txt
> > @@ -85,9 +85,10 @@ Omitting <branch> detaches HEAD at the tip of the 
> > current branch.
> > from the index file or from a named <tree-ish> (most often a
> > commit). In this case, the `-b` and `--track` options are
> > meaningless and giving either of them results in an error. The
> > - <tree-ish> argument can be used to specify a specific tree-ish
> > - (i.e. commit, tag or tree) to update the index for the given
> Do these lines above actually need reflowing? Their content hasn't changed 
> making it more difficult to spot the significant changes below here.

They're just part of the context of the automatically created patch.

> > +                               Note that this means
> > + that the changes this command introduces are staged automatically.
> Does this actually capture the intent of the user confusion it's meant to 
> cover? I may have missed the original discussions.

There is no original discussion in this mailing list. I got surprised the command
automatically modified my staging area even though I didn't remember to have read it in
the corresponding man page. Upon reading the relevant part of the man page again, I
noticed that it in fact can be inferred from the half sentence "to update the index for
the given paths before updating the working tree." but it isn't pointed out explicitly.
Doing so doesn't take a lot more text and can avoid such surprises. So yes, if it's
pointed out explicitly, the confusion is removed.

> For a clean commit checkout my mental model is not one of anything new being 
> actively staged i.e. different from what was in the commit.

Note that this is not about something like `git checkout 925b29` but about something like
`git checkout 925b29 src`.

> I can see that 
> if a particular tree is checkout then it's implicit staging could well be a 
> surprise.

And it is actually documented. Just not explicitly mentioned / pointed out.

--
Christoph