Set some gc.* git config

In particular, this sets `gc.autoDetach` to "false".
This commit is contained in:
Tim Hockin 2022-02-19 11:25:06 -08:00
parent e98bbb0228
commit 47404c921e
1 changed files with 26 additions and 2 deletions

View File

@ -408,6 +408,12 @@ func main() {
askpassCount.WithLabelValues(metricKeySuccess).Inc()
}
// Set additional configs we want, but users might override.
if err := setupDefaultGitConfigs(ctx); err != nil {
fmt.Fprintf(os.Stderr, "ERROR: can't set default git configs: %v\n", err)
os.Exit(1)
}
// This needs to be after all other git-related config flags.
if *flGitConfig != "" {
if err := setupExtraGitConfigs(ctx, *flGitConfig); err != nil {
@ -755,8 +761,8 @@ func addWorktreeAndSwap(ctx context.Context, gitRoot, dest, branch, rev string,
return err
}
// GC clone
if _, err := cmdRunner.Run(ctx, gitRoot, nil, *flGitCmd, "gc", "--prune=all"); err != nil {
// Run GC if needed.
if _, err := cmdRunner.Run(ctx, gitRoot, nil, *flGitCmd, "gc", "--auto"); err != nil {
return err
}
@ -1170,6 +1176,24 @@ func callGitAskPassURL(ctx context.Context, url string) error {
return nil
}
func setupDefaultGitConfigs(ctx context.Context) error {
configs := []keyVal{{
// Never auto-detach GC runs.
key: "gc.autoDetach",
val: "false",
}, {
// Fairly aggressive GC.
key: "gc.pruneExpire",
val: "now",
}}
for _, kv := range configs {
if _, err := cmdRunner.Run(ctx, "", nil, *flGitCmd, "config", "--global", kv.key, kv.val); err != nil {
return fmt.Errorf("error configuring git %q %q: %v", kv.key, kv.val, err)
}
}
return nil
}
func setupExtraGitConfigs(ctx context.Context, configsFlag string) error {
log.V(1).Info("setting additional git configs")