On Wed, Sep 05 2018, Tim Schumacher wrote: > On 05.09.18 19:34, Jeff King wrote: >> >> It could also extend to ! aliases if we wanted (i.e., my '!git foo' >> example from earlier), but you'd have to carry the counter through the >> environment between processes. > > That is a question about "shooting oneself in the foot" again, > but I think trying to prevent that would require more changes > than I can make, and it is definitely out-of-scope for this > patch. I agree it could be done later, but it would be great if you could follow-up with that. Right now if you do: a = !git b b = !git a You end up with a fork bomb, and we don't guard against this, and if you have mixed execution / internal aliasing, e.g.: a = b b = c c = d d = !git a The loop detection doesn't kick in. It should be easy to add detection for this on top. See what we do with git_config_push_parameter() in git.c already, i.e. you'd add some simliar env variable, set items in the string list delimited by e.g. whitespace, and then just pre-populate your string list with that if it's set, and re-set it & carry it forward. Then any combination of internal aliasing and custom commands will benefit from loop detection.