Re: [RFC PATCH v2] Allow aliases that include other aliases
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Sep 6, 2018, 14:17 UTC
- Message-ID
- <87o9dar9qc.fsf@evledraar.gmail.com>
- In-Reply-To
- <cd9a3a74-fdd6-0fb5-ae22-41d552391478@gmx.de>
On Wed, Sep 05 2018, Tim Schumacher wrote:
Show 10 quoted lines
> 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 aYou 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 aThe 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.