Hello Matthieu, On 8 February 2017 at 20:10, Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> wrote: > In a previous discussion, I made an analogy with "cd -" (which is the > source of inspiration of this shorthand AFAIK): "-" did not magically > become "the last visited directory" for all Unix commands, just for > "cd". And in this case, I'm happy with it. For example, I never need > "mkdir -", and I'm happy I can't "rm -fr -" by mistake. > > So, it's debatable whether it's a good thing to have all commands > support "-". For example, forcing users to explicitly type "git branch > -d @{1}" and not providing them with a shortcut might be a good thing. builtin/branch.c does not call setup_revisions and remains unaffected by this patch :) In my original patch post, I was not explicit about what files call setup_revisions. I would like to rectify that with this (grep-ed) list: * builtin/blame.c * builtin/diff.c * builtin/diff-files.c * builtin/diff-index.c * builtin/diff-tree.c * builtin/log.c * builtin/rev-list.c * builtin/shortlog.c * builtin/fast-export.c * builtin/fmt-merge-msg.c builtin/add.c builtin/checkout.c builtin/commit.c builtin/merge.c builtin/pack-objects.c builtin/revert.c * marked commands only show information, and don't change anything. As you might notice, in this list, most commands are not of the `rm` variety, i.e. something that would delete stuff. In the next version of this patch, I will definitely include the list of commands which are "rm-ish" and affected by this patch. > > I don't have strong opinion on this: I tend to favor consistency and > supporting "-" everywhere goes in this direction, but I think the > downsides should be considered too. A large part of the exercice here is > to write a good commit message! Yes, I prefer consistency very much as well! Having "-" mean the same thing across a lot of commands is better than having that shorthand only in a few commands, as it is now. Unless there is a specific confusion that might arise because of this shorthand inclusion, I think that this shorthand should be supported across the board. (I especially like typing `git checkout - <filename>` which is very handy!) > > Another issue with this is: - is also a common way to say "use stdin > instead of a file", so before enabling - for "previous branch", we need > to make sure it does not introduce any ambiguity. Git does not seem to > use "- for stdin" much (most commands able to read from stdin have an > explicit --stdin option for that), a quick grep in the docs shows only > "git blame --contents -" which is OK because a revision wouldn't make > sense here anyway. Yes, just to jog your memory, this was discussed here [1] Junio said: As long as the addition is carefully prepared so that we know it will not conflict (or be confused by users) with possible other uses of "-", I do not think we would mind "git branch -D -" and other commands to learn "-" as a synonym for @{-1}. > > -- > Matthieu Moy > http://www-verimag.imag.fr/~moy/ Thanks a lot for the review on this patch, Matthieu! -- Best Regards, - Siddharth. [1]: https://public-inbox.org/git/7vmwpitb6k.fsf@xxxxxxxxxxxxxxxxxxxxxxxx/