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.