pack-objects: don't leak pack window reference when splitting packs
[gitweb.git] / builtin-gc.c
index 48f7d95f9784d27f023b22343929f5ad188caa4c..7af65bb31bfbf3e9a0e47901d44168389d736d20 100644 (file)
@@ -18,7 +18,7 @@
 #define FAILED_RUN "failed to run %s"
 
 static const char * const builtin_gc_usage[] = {
-       "git-gc [options]",
+       "git gc [options]",
        NULL
 };
 
@@ -26,7 +26,7 @@ static int pack_refs = 1;
 static int aggressive_window = -1;
 static int gc_auto_threshold = 6700;
 static int gc_auto_pack_limit = 50;
-static char *prune_expire = "2.weeks.ago";
+static const char *prune_expire = "2.weeks.ago";
 
 #define MAX_ADD 10
 static const char *argv_pack_refs[] = {"pack-refs", "--all", "--prune", NULL};
@@ -35,7 +35,7 @@ static const char *argv_repack[MAX_ADD] = {"repack", "-d", "-l", NULL};
 static const char *argv_prune[] = {"prune", "--expire", NULL, NULL};
 static const char *argv_rerere[] = {"rerere", "gc", NULL};
 
-static int gc_config(const char *var, const char *value)
+static int gc_config(const char *var, const char *value, void *cb)
 {
        if (!strcmp(var, "gc.packrefs")) {
                if (value && !strcmp(value, "notbare"))
@@ -57,17 +57,14 @@ static int gc_config(const char *var, const char *value)
                return 0;
        }
        if (!strcmp(var, "gc.pruneexpire")) {
-               if (!value)
-                       return config_error_nonbool(var);
-               if (strcmp(value, "now")) {
+               if (value && strcmp(value, "now")) {
                        unsigned long now = approxidate("now");
                        if (approxidate(value) >= now)
                                return error("Invalid %s: '%s'", var, value);
                }
-               prune_expire = xstrdup(value);
-               return 0;
+               return git_config_string(&prune_expire, var, value);
        }
-       return git_default_config(var, value);
+       return git_default_config(var, value, cb);
 }
 
 static void append_option(const char **cmd, const char *opt, int max_length)
@@ -226,7 +223,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
                OPT_END()
        };
 
-       git_config(gc_config);
+       git_config(gc_config, NULL);
 
        if (pack_refs < 0)
                pack_refs = !is_bare_repository();