Re: [PATCH 2/2 v3] sha1_name: teach get_sha1_1 "-" shorthand for "@{-1}"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 13, 2017, 19:51 UTC
- Message-ID
- <xmqq1sv1euob.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <vpqbmu768on.fsf@anie.imag.fr>
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
Show 9 quoted lines
> Siddharth Kannan <kannan.siddharth12@gmail.com> writes:
>
>> + if (!strcmp(name, "-")) {
>> + name = "@{-1}";
>> + len = 5;
>> + }
>
> One drawback of this approach is that further error messages will be
> given from the "@{-1}" string that the user never typed.Right.
Show 5 quoted lines
> There are at least:
>
> $ git grep -n -A1 'strcmp.*"-"' | grep -B 1 '@\{1\}'
> builtin/checkout.c:975: if (!strcmp(arg, "-"))
> builtin/checkout.c-976- arg = "@{-1}";I didn't check the surrounding context to be sure, but I think this "- to @{-1}" conversion cannot be delegated down to revision parsing that eventually wants to return a 40-hex as the result.
We do want a branch _name_ sometimes when we say "@{-1}"; "checkout master" (i.e. checkout by name) and "checkout master^0" (i.e. the same commit object, but not by name) do different things.
Show 5 quoted lines
> builtin/merge.c:1231: } else if (argc == 1 && !strcmp(argv[0], "-")) {
> builtin/merge.c-1232- argv[0] = "@{-1}";
> --
> builtin/revert.c:158: if (!strcmp(argv[1], "-"))
> builtin/revert.c-159- argv[1] = "@{-1}";These should be safe to delegate down.
> builtin/worktree.c:344: if (!strcmp(branch, "-"))
> builtin/worktree.c-345- branch = "@{-1}";I do not know about this one, but it smells like a branch name that wants to be used before it gets turned into 40-hex.