Merge branch 'maint'
[gitweb.git] / t / t1410-reflog.sh
index f959aae84630ddbb68304868b1a025b7c2d33d10..25046c42081c8412b56c6b739dfd3a67ab700810 100755 (executable)
@@ -70,9 +70,7 @@ test_expect_success setup '
        E=`git rev-parse --verify HEAD:A/B/E` &&
        check_fsck &&
 
-       chmod +x C &&
-       ( test "`git config --bool core.filemode`" != false ||
-         echo executable >>C ) &&
+       test_chmod +x C &&
        git add C &&
        test_tick && git commit -m dragon &&
        L=`git rev-parse --verify HEAD` &&
@@ -175,21 +173,85 @@ test_expect_success 'recover and check' '
 
 '
 
-test_expect_success 'prune --expire' '
-
-       before=$(git count-objects | sed "s/ .*//") &&
-       BLOB=$(echo aleph | git hash-object -w --stdin) &&
-       BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") &&
-       test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
-       test -f $BLOB_FILE &&
-       git reset --hard &&
-       git prune --expire=1.hour.ago &&
-       test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
-       test -f $BLOB_FILE &&
-       test-chmtime -86500 $BLOB_FILE &&
-       git prune --expire 1.day &&
-       test $before = $(git count-objects | sed "s/ .*//") &&
-       ! test -f $BLOB_FILE
+test_expect_success 'delete' '
+       echo 1 > C &&
+       test_tick &&
+       git commit -m rat C &&
+
+       echo 2 > C &&
+       test_tick &&
+       git commit -m ox C &&
+
+       echo 3 > C &&
+       test_tick &&
+       git commit -m tiger C &&
+
+       HEAD_entry_count=$(git reflog | wc -l)
+       master_entry_count=$(git reflog show master | wc -l)
+
+       test $HEAD_entry_count = 5 &&
+       test $master_entry_count = 5 &&
+
+
+       git reflog delete master@{1} &&
+       git reflog show master > output &&
+       test $(($master_entry_count - 1)) = $(wc -l < output) &&
+       test $HEAD_entry_count = $(git reflog | wc -l) &&
+       ! grep ox < output &&
+
+       master_entry_count=$(wc -l < output)
+
+       git reflog delete HEAD@{1} &&
+       test $(($HEAD_entry_count -1)) = $(git reflog | wc -l) &&
+       test $master_entry_count = $(git reflog show master | wc -l) &&
+
+       HEAD_entry_count=$(git reflog | wc -l)
+
+       git reflog delete master@{07.04.2005.15:15:00.-0700} &&
+       git reflog show master > output &&
+       test $(($master_entry_count - 1)) = $(wc -l < output) &&
+       ! grep dragon < output
+
+'
+
+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
 
 '