Subject: Re: [RFC PATCH v2] Allow aliases that include other aliases

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 06 Sep 2018 16:17:31 +0200

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.