Thanks for both of your sets of comments. This is the interdiff. --- Documentation/git-gc.txt | 7 ++++--- builtin-gc.c | 2 +- t/t5304-prune.sh | 24 +++++++++++++++++++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index fcef5fb..b292e98 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -8,7 +8,7 @@ git-gc - Cleanup unnecessary files and optimize the local repository SYNOPSIS -------- -'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date>] +'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] DESCRIPTION ----------- @@ -60,8 +60,9 @@ are consolidated into a single pack by using the `-A` option of automatic consolidation of packs. --prune=<date>:: - Prune loose objects older than date (default is 2 weeks ago). - This option is on by default. + Prune loose objects older than date (default is 2 weeks ago, + overrideable by the config variable `gc.pruneExpire`). This + option is on by default. --no-prune:: Do not prune any loose objects. diff --git a/builtin-gc.c b/builtin-gc.c index 06bc83c..fc556ed 100644 --- a/builtin-gc.c +++ b/builtin-gc.c @@ -181,7 +181,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) struct option builtin_gc_options[] = { { OPTION_STRING, 0, "prune", &prune_expire, "date", - "prune unreferenced objects (deprecated)", + "prune unreferenced objects", PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire }, OPT_BOOLEAN(0, "aggressive", &aggressive, "be more thorough (increased runtime)"), OPT_BOOLEAN(0, "auto", &auto_gc, "enable auto-gc mode"), diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh index 2e9c4a9..55ed7c7 100755 --- a/t/t5304-prune.sh +++ b/t/t5304-prune.sh @@ -112,7 +112,7 @@ test_expect_success 'prune: do not prune heads listed as an argument' ' ' -test_expect_success 'gc --no-prune && gc --prune=<date>' ' +test_expect_success 'gc --no-prune' ' before=$(git count-objects | sed "s/ .*//") && BLOB=$(echo aleph_0 | git hash-object -w --stdin) && @@ -120,14 +120,32 @@ test_expect_success 'gc --no-prune && gc --prune=<date>' ' test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && test -f $BLOB_FILE && test-chmtime =-$((86400*5001)) $BLOB_FILE && + git config gc.pruneExpire 2.days.ago && git gc --no-prune && test 1 = $(git count-objects | sed "s/ .*//") && + test -f $BLOB_FILE + +' + +test_expect_success 'gc respects gc.pruneExpire' ' + + git config gc.pruneExpire 5002.days.ago && + git gc && test -f $BLOB_FILE && + git config gc.pruneExpire 5000.days.ago && + git gc && + test ! -f $BLOB_FILE + +' + +test_expect_success 'gc --prune=<date>' ' + + BLOB=$(echo aleph_0 | git hash-object -w --stdin) && + BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") && + test-chmtime =-$((86400*5001)) $BLOB_FILE && git gc --prune=5002.days.ago && - test 1 = $(git count-objects | sed "s/ .*//") && test -f $BLOB_FILE && git gc --prune=5000.days.ago && - test 0 = $(git count-objects | sed "s/ .*//") && test ! -f $BLOB_FILE ' -- 1.6.2.rc0.367.g7f9a5 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html