git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 6/7] stage: add 'diff' subcommand

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Aug 11, 2021, 20:18 UTC
Message-ID
<611430a5b83e1_19f82083b@natae.notmuch>
In-Reply-To
<YRQfx+Njj1WxOnyG@coredump.intra.peff.net>
Jeff King wrote:
Show 23 quoted lines
> On Wed, Aug 11, 2021 at 09:00:18AM -0700, Junio C Hamano wrote:
> 
> > A more notable aspect of the above list is not the similarity but
> > difference from the rest of Git.  The above organizes various
> > operations on the staging area in a single command as its operating
> > modes, so you'd use "git stage --diff" for comparing with the
> > staging area but use something else ("git commit --diff HEAD"???).
> > 
> > It is a good example that illustrates that the proposed organization
> > may not help learning or using the system for operations that also
> > apply to other things like commit and working tree (in other words,
> > "git stage --grep" may not be such a good idea for the same reason
> > as "git stage --diff").  But if it were limited to operations that
> > apply only to the index (e.g. "git add" and "git rm"), it may be an
> > improvement (I think we added "git stage" synonym exactly for that
> > reason, already).
> 
> One thing I find off-putting about "git stage --diff" is that to me,
> "stage" reads as a verb. So it is like "git add --diff", which seems
> out-of-place; there are two verbs in a row.
> 
> I do not mind the term "staging area", but using "the stage" as a noun
> is simply confusing to me in this context.
OK, but "stage" can be a noun.
Here is one of the definitions:
  : a center of attention or scene of action

This definition doesn't imply what the action is about, but "commit stage" should be perfectly aligned with that definition.

Here's another one:
  : one of two or more sections of a rocket that have their own fuel and engine

These rocket stages need to be prepared before the launch, just like changes before a commit. A commit can be thought of as a single-stage rocket, and just like parts can be added and removed from this single-stage before launch, so can changes before a commit.

I understand why this might not seem natural to native English speakers, but it's perfectly aligned with the etymology of the word "stage" (to stay).

I'm not saying it should be thought of this way, merely that it *can*.

Either way, I also thought about adding yet another command `git staging-area` and diff instead of an option be a subcommand: `git staging-area diff`, but to be frank I don't think anybody would end up using this command, especially without default aliases (like `git sa`). So I opted against it.

Even though `git stage --diff` is not ideal, it's the least bad option in my option.

-- 
Felipe Contreras
Previous: Jeff KingNext: Jeff King
Message 13 of 24 in “[un]stage: officially start moving to "staging area"”
  1. 0/7 [un]stage: officially start moving to "staging area"Felipe Contreras, Aug 11, 2021
  2. 1/7 stage: add proper 'stage' commandFelipe Contreras, Aug 11, 2021
  3. 2/7 stage: add helper to run commandsFelipe Contreras, Aug 11, 2021
  4. 3/7 stage: add 'add' subcommandFelipe Contreras, Aug 11, 2021
  5. 4/7 stage: add 'remove' subcommandFelipe Contreras, Aug 11, 2021
  6. 5/7 unstage: add 'unstage' commandFelipe Contreras, Aug 11, 2021
  7. 6/7 stage: add 'diff' subcommandFelipe Contreras, Aug 11, 2021
  8. Bagas SanjayaAug 11, 2021
  9. Felipe ContrerasAug 11, 2021
  10. Junio C HamanoAug 11, 2021
  11. Felipe ContrerasAug 11, 2021
  12. Jeff KingAug 11, 2021
  13. Felipe ContrerasAug 11, 2021
  14. Jeff KingAug 11, 2021
  15. Felipe ContrerasAug 11, 2021
  16. Michael J GruberAug 11, 2021
  17. Jeff KingAug 11, 2021
  18. Michael J GruberAug 11, 2021
  19. Jeff KingAug 11, 2021
  20. Junio C HamanoAug 11, 2021
  21. Felipe ContrerasAug 11, 2021
  22. 7/7 stage: add 'edit' commandFelipe Contreras, Aug 11, 2021
  23. Michael J GruberAug 11, 2021
  24. Felipe ContrerasAug 11, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.