reflog: honor gc.reflogexpire=never
authorAdam Simpkins <simpkins@facebook.com>
Sat, 27 Feb 2010 03:50:03 +0000 (19:50 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 28 Feb 2010 18:28:26 +0000 (10:28 -0800)
Previously, if gc.reflogexpire or gc.reflogexpire were set to "never"
or "false", the builtin default values were used instead.

Signed-off-by: Adam Simpkins <simpkins@facebook.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-reflog.c
t/t1410-reflog.sh

index 749821078df129cf13de34ebbd40a8cb7a38e00e..64e45bd8137bef2b6cfe1f8a3da79e2ff6f8fc47 100644 (file)
@@ -530,16 +530,14 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
        int i, status, do_all;
        int explicit_expiry = 0;
 
+       default_reflog_expire_unreachable = now - 30 * 24 * 3600;
+       default_reflog_expire = now - 90 * 24 * 3600;
        git_config(reflog_expire_config, NULL);
 
        save_commit_buffer = 0;
        do_all = status = 0;
        memset(&cb, 0, sizeof(cb));
 
-       if (!default_reflog_expire_unreachable)
-               default_reflog_expire_unreachable = now - 30 * 24 * 3600;
-       if (!default_reflog_expire)
-               default_reflog_expire = now - 90 * 24 * 3600;
        cb.expire_total = default_reflog_expire;
        cb.expire_unreachable = default_reflog_expire_unreachable;
 
index 80af6b9b7ea50652dff6804b589d134207e9258f..25046c42081c8412b56c6b739dfd3a67ab700810 100755 (executable)
@@ -214,4 +214,45 @@ test_expect_success 'delete' '
 
 '
 
+test_expect_success 'rewind2' '
+
+       test_tick && git reset --hard HEAD~2 &&
+       loglen=$(wc -l <.git/logs/refs/heads/master) &&
+       test $loglen = 4
+
+'
+
+test_expect_success '--expire=never' '
+
+       git reflog expire --verbose \
+               --expire=never \
+               --expire-unreachable=never \
+               --all &&
+       loglen=$(wc -l <.git/logs/refs/heads/master) &&
+       test $loglen = 4
+
+'
+
+test_expect_success 'gc.reflogexpire=never' '
+
+       git config gc.reflogexpire never &&
+       git config gc.reflogexpireunreachable never &&
+       git reflog expire --verbose --all &&
+       loglen=$(wc -l <.git/logs/refs/heads/master) &&
+       test $loglen = 4
+'
+
+test_expect_success 'gc.reflogexpire=false' '
+
+       git config gc.reflogexpire false &&
+       git config gc.reflogexpireunreachable false &&
+       git reflog expire --verbose --all &&
+       loglen=$(wc -l <.git/logs/refs/heads/master) &&
+       test $loglen = 4 &&
+
+       git config --unset gc.reflogexpire &&
+       git config --unset gc.reflogexpireunreachable
+
+'
+
 test_done