Re: [PATCH/RFC] git.c: support "!!" aliases that do not move cwd
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Oct 7, 2016, 14:11 UTC
- Message-ID
- <alpine.DEB.2.20.1610071519450.35196@virtualbox>
- In-Reply-To
- <CACsJy8ASc7Fxm5XDHFiX9E+bQ8s1MtmEHfc7bZY4C-_GEQr0og@mail.gmail.com>
Hi Duy,
On Fri, 7 Oct 2016, Duy Nguyen wrote:
Show 34 quoted lines
> On Fri, Oct 7, 2016 at 6:20 PM, Johannes Schindelin > <Johannes.Schindelin@gmx.de> wrote: > > > > On Thu, 6 Oct 2016, Junio C Hamano wrote: > > > >> Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes: > >> > >> > Throwing something at the mailing list to see if anybody is > >> > interested. > >> > > >> > Current '!' aliases move cwd to $GIT_WORK_TREE first, which could make > >> > handling path arguments hard because they are relative to the original > >> > cwd. We set GIT_PREFIX to work around it, but I still think it's more > >> > natural to keep cwd where it is. > >> > > >> > We have a way to do that now after 441981b (git: simplify environment > >> > save/restore logic - 2016-01-26). It's just a matter of choosing the > >> > right syntax. I'm going with '!!'. I'm not very happy with it. But I > >> > do like this type of alias. > >> > >> I do not know why you are not happy with the syntax, but I > >> personally think it brilliant, both the idea and the preliminary > >> clean-up that made this possible with a simple patch like this. > > > > I guess he is not happy with it because "!!" is quite unintuitive a > > construct. I know that *I* would have been puzzled by it, asking "What the > > heck does this do?". > > Yep. And I wouldn't want to set a tradition for the next alias type > '!!!'. There's no good choice to represent a new alias type with a > leading symbol. This just occurred to me, however, what do you think > about a new config group for it? With can have something like > externalAlias.* (or some other name) that lives in parallel with > alias.*. Then we don't need '!' (or '!!') at all.
But what would the precedence be? externalAlias.xyz wins over alias.xyz?
And we still would need '!' support: tons of people (including myself) rely on it.
Possibly a better idea would be to use *another* special symbol, one that makes intuitive sense as a modifier, such as:
[alias] # This works as before xyz = !pwd # As does this stat = -p status # This, however, is different: duy = (nocd)!pwd
This is backwards compatible as "(" is not a part of any Git command, nor of a valid alias, nor is it commonly used as part of a git-* executable/script.
It is also kind of a bit more intuitive, I'd wager, and it is also extensible to future options we may want to introduce.
Ciao, Dscho