On Thu, Jun 20, 2019 at 05:11:03PM +0700, Duy Nguyen wrote: > > Another option would be to just pass "-c gc.auto=0" to the child > > processes to inhibit auto-gc. But maybe it makes sense to have a nicer > > interface (after all, somebody else could be doing the same "let's do a > > bunch of fetches in a row" without using the multi-fetch code). > > Nah to me -c is much nicer (and flexible too). The only thing I'm not > sure about is whether a user could override it. If fetch.c adds -c > gc.auto=0 automatically, and the user wants auto gc back, will "git -c > gc.auto=non-zero fetch --multiple" still work? > > I haven't checked git_config_push_parameter() carefully, but I have an > impression that the parameter order there is "wrong", at least in this > case. It depends what you're trying to get it to do. I'd expect that command to turn on auto-gc for just the outer fetch (i.e., overriding any on-disk disabling of auto-gc), but keep it off for the child fetches. And I think that is how it would behave: the outer fetch only sees the config you provided. The inner ones see "gc.auto=non-zero gc.auto=0-zero" because git_config_push_parameter() appends. And they accept the latter under last-one-wins rules. If you expect to be able to re-enable auto-gc in the child fetches, then I don't think there would be a way to do that. > > Though there I kind of wonder if this would apply to other scripted > > uses, too. E.g., if I'm doing a bunch of commits, I might want to > > inhibit auto-gc and then run it myself at the end. Should we support > > "GIT_AUTO_GC=0" in the environment (and a matching "git --no-auto-gc > > ..." option that could be used here)? > > export GIT_CONFIG=gc.auto=0 ? Almost. The parser for GIT_CONFIG_PARAMETERS is very picky about seeing single quotes around each item, which makes it a little unfriendly to use manually. Plus there may be existing values if your script was invoked as "git -c whatever my-script". It's probably not that big a deal for a script to just use "git -c gc.auto" to inhibit auto-gc for each command that needs it. -Peff