Re: [PATCH 2/2] restore: default to HEAD when combining --worktree and --staged
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- May 5, 2020, 03:53 UTC
- Message-ID
- <CAPig+cT62cEx9Zk+DN02xGfAmqZD258Toa3PArSxEf8QDFeDww@mail.gmail.com>
- In-Reply-To
- <xmqqimhfoelf.fsf@gitster.c.googlers.com>
On Fri, May 1, 2020 at 11:33 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 29 quoted lines
> Eric Sunshine <sunshine@sunshineco.com> writes: > > [...] This requirement > > makes it cumbersome to restore a file in both the worktree and the > > index. > > > > However, HEAD is also a reasonably intuitive default restore source when > > --worktree and --staged are combined. After all, if a user is asking to > > throw away all local changes to a file (on disk and in the index) > > without specifying a restore source explicitly -- and the user expects > > the file to be restored from _somewhere_ -- then it is likely that the > > user expects them to be restored from HEAD, which is an intuitive and > > logical place to find a recent unadulterated copy of the file. > > I also found that these two paragraphs a bit too long, and by the > time I finished reading them I forgot that you mentioned that HEAD > is the default when --staged is given. [...] > > ... This requirement makes it cumbersome to restore a file in > both the worktree and the index. > > As we are *not* going to restore the index and the working tree > from two different sources, we need to pick a single default > when both options are given, and the default used for restoring > the index, HEAD, is a reasonable one in this case, too. Another > plausible source might be the index, but that does not make any > sense to the user who explicitly gave the `--staged` option. > > So, make HEAD the default source when --staged is given, whether > --worktree is used at the same time.
Thanks. I was having trouble writing it without being overly subjective (and using words like "intuitive" and "logical"). I'll probably drop the "Another plausible..." bit from the rewrite, though.
Show 13 quoted lines
> > +By default, the restore source for `--worktree` is the index, and the > > +restore source for `--staged` is `HEAD`. When combining `--worktree` and > > +`--staged`, the restore source is `HEAD`. `--source` can be used to specify > > +a different commit as the restore source. > > Clear enough, but I wonder if we can simplify it even further. > > By default, if `--staged` is given, the contents are restored > from `HEAD`. Otherwise, the contents are restored from the > index. > > because `--worktree` is the default for the command when neither > `--staged` or `--worktree` is given.
Makes sense. I wasn't terribly happy with it either.