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

Re: [PATCH 0/3] preparatory patches for the submodule groups

From
Junio C Hamano <gitster@pobox.com>
Date
May 3, 2016, 21:32 UTC
Message-ID
<xmqqfutylte1.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAGZ79kbm5y+LeyA_dwQWKFNaa42280cOvwQYZTP=-aRnySsB1A@mail.gmail.com>
Stefan Beller <sbeller@google.com> writes:
Show 12 quoted lines
>>> * I think we want to head for consistency, eventually.
>>>    e.g. commands with no arguments such as tag, branch
>>>    give a list of their respective domain.
>>
>> Isn't that a historical mistake we are regretting, though?  Only
>> after many other operation modes were invented and "create X" proves
>> not to be the only primary modes we had to invent "tag -l" and
>> "branch -l".  Aren't we better off not having "no option means list"
>> kind of default?
>
> listing is not destructive, and I really like to not type a single dash
> for some commands.
Actually, listing is destructive to the user's cognitive state.

I wouldn't be surprised if many people wished that "git branch" did not list (and required "git branch -l" to list) to scroll everything they are looking away but instead showed what the current branch is.

Show 10 quoted lines
>>>    Subcommands do not give lists by default, e.g.
>>>    `git stash clear`, `git remote prune`
>>>    which are the moral equivalent to
>>>    `git submodule deinit` just work as they were told, no --switch needed.
>>
>> I wouldn't say "git rm" should remove everything by extending that
>> logic, but I can certainly buy if somebody argues "git submodule
>> deinit" is not destructive enough to warrant extra safety.
>
> `git rm` is a command, not a subcommand though.
Yes, it is a command, just like branch and tag you brought up.

"git branch -d" is not a command, but a mode of operation. If we did the "mode word" UI [*1*], it would have been a subcommand. And I certainly would not say it should remove everything if there is no argument on the command line.

I am not sure where you are going with that though anyway.

I think the "safety" is about forcing user to be more explicit when triggering mass destruction, and I do not think it matters if that destruction is done by a first-class subcommand of "git", or subsubcommand.

[References]
*1* http://thread.gmane.org/gmane.comp.version-control.git/231376/focus=231478
Previous: Stefan BellerNext: Stefan Beller
Message 15 of 17 in “preparatory patches for the submodule groups”
  1. 0/3 preparatory patches for the submodule groupsStefan Beller, May 2, 2016
  2. 1/3 submodule deinit test: fix broken && chain in subshellStefan Beller, May 2, 2016
  3. Junio C HamanoMay 3, 2016
  4. Stefan BellerMay 3, 2016
  5. 2/3 submodule deinit: lose requirement for giving '.'Stefan Beller, May 2, 2016
  6. Junio C HamanoMay 3, 2016
  7. Stefan BellerMay 3, 2016
  8. Junio C HamanoMay 3, 2016
  9. Stefan BellerMay 3, 2016
  10. 3/3 submodule init: redirect stdout to stderrStefan Beller, May 2, 2016
  11. Junio C HamanoMay 3, 2016
  12. Stefan BellerMay 3, 2016
  13. Junio C HamanoMay 3, 2016
  14. Stefan BellerMay 3, 2016
  15. Junio C HamanoMay 3, 2016
  16. Stefan BellerMay 3, 2016
  17. Junio C HamanoMay 3, 2016

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.