Hi Duy, On Fri, 7 Oct 2016, Duy Nguyen wrote: > On Fri, Oct 7, 2016 at 6:20 PM, Johannes Schindelin > <Johannes.Schindelin@xxxxxx> wrote: > > > > On Thu, 6 Oct 2016, Junio C Hamano wrote: > > > >> Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> 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