Re: [PATCH] branch: allow "-" as a short-hand for "previous branch"
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Aug 16, 2022, 17:03 UTC
- Message-ID
- <986564d9-4d49-b1ef-e2e0-65d6f67f9e79@gmail.com>
- In-Reply-To
- <9so90892-25nr-0s4o-q98n-2qo76r3s89p3@tzk.qr>
Hi Johannes,
On 8/16/22 11:31 AM, Johannes Schindelin wrote:
Show 5 quoted lines
>> $ git merge - old-branch >> merge: - - not something we can merge > > This is confusing me: how is the patch supporting `git branch -d -` > aligned with the presented `git merge` invocations?
"merge" supports multiple objects to be specified, but "-" only is accepted if just one argument is specified, as Junio did it in:
commit 4e8115fff135a09f75020083f51722e7e35eb6e9 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Apr 7 15:57:57 2011 -0700
merge: allow "-" as a short-hand for "previous branch"
Just like "git checkout -" is a short-hand for "git checkout @{-1}" to
conveniently switch back to the previous branch, "git merge -" is a
short-hand for "git merge @{-1}" to conveniently merge the previous
branch.It will allow me to say:
$ git checkout -b au/topic
$ git am -s ./+au-topic.mbox
$ git checkout pu
$ git merge -which is an extremely typical and repetitive operation during my git day.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/builtin/merge.c b/builtin/merge.c index d54e7ddbb1..0bdd19a137 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1062,9 +1062,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix) if (!allow_fast_forward && fast_forward_only) die(_("You cannot combine --no-ff with --ff-only.")); - if (!argc && !abort_current_merge && default_to_upstream) - argc = setup_with_upstream(&argv); - + if (!abort_current_merge) { + if (!argc && default_to_upstream) + argc = setup_with_upstream(&argv); + else if (argc == 1 && !strcmp(argv[0], "-")) + argv[0] = "@{-1}"; + } if (!argc) usage_with_options(builtin_merge_usage, builtin_merge_options); So I aligned "branch -d" (or "delete-branch") with that. The other two commands that already support "-", also works the same way: $ git checkout -B - default fatal: '-' is not a valid branch name $ git rebase default - fatal: no such branch/commit '-' To summarize, my goal is to allow: $ git checkout work_to_review $ git checkout - $ git merge - # or git rebase - $ git branch -d - Makes sense to me... I've updated the commit message with a more specific message and removed the braces, jic.