On Tue, Sep 04, 2018 at 10:55:35AM -0700, Junio C Hamano wrote: > Tim Schumacher <timschumi@xxxxxx> writes: > > > I submitted this as RFC because I'm not sure whether disallowing > > nested aliases was an intentional design choice. The done_alias > > check implies that disallowing is intended, but the direct > > recursion check for aliases that call themselves opposes that. > > "direct recursion check for aliases"? I am not sure what you mean > by that, but anyway. > > If I recall correctly, it is intended that we disallow run_argv() > doing handle_alias() twice (or more). But the ultimate objective is > to forbid infinite loops, "git foo" expanding to "git bar" which in > turn expanding back to "git foo", and the current "do not expand > alias to another" is a simple but too strict implementation. As > long as a replacement implementation still forbids infinite loops > with reasonable cost and complexity, I do not think we would mind > such an improvement to allow alias expanding to another alias. I agree that this could be looser, if all we care about is infinite loops. But given the issues we've had with aliases and the startup sequence, I also would not be surprised if there is some weird hidden effect if we call handle_alias() more than once. That's not a reason not to pursue this, but just one more thing to look out for. As an aside, you can still do this: $ git config alias.foo '!git bar' $ git config alias.bar '!git foo' $ git foo [boy, my CPU fan is really spinning] I don't know how much effort we actually need to put into people not shooting themselves in the foot, since we can't cover all of the cases anyway (and in a non-infinite configuration, that's another solution for Tim's original problem). -Peff