Re: diff alias which used to work in version 2.27, failing from version 2.28 onwards
On Thu, Aug 24, 2023 at 10:19:18AM +0000, Reverdell Auriane wrote:
> 14:38:45.275964 git.c:439 trace: built-in: git diff a2028e7b^..a2028e7b a2028e7b
> [...]
> Is that expected behavior? if yes, how is the right/clean way to
> discard the command line argument of the alias?
Yes, that's expected. Your alias was always a little broken by adding the extra argument, but "git diff" got a little more careful about its input in 8bfcb3a690 (git diff: improve range handling, 2020-06-12), which as part of v2.28.
The usual way for manipulating arguments in a shell snippet is to make a function, like:
[alias]
dici = "!f() { git diff ${1:-HEAD}^..${1:-HEAD}; }; f"Then Git ends up running "f a2028e7b", and the shell does the rest. It's obviously a bit more verbose to write, but you're free to do even more manipulation (e.g., using the first non-option argument as the rev and taking the rest as options).
All that said, there is a shorthand that may make your alias obsolete. From "git help revisions":
<rev>^-<n>, e.g. HEAD^-, HEAD^-2
Equivalent to <rev>^<n>..<rev>, with <n> = 1 if not given.So just:
git diff a2028e7b^-
does what you want.
-Peff