Merge branch 'ps/reflog-expiry-fix' into jch
The default expiry periods for both reachable and unreachable reflog entries have been corrected from a past regression that swapped them. * ps/reflog-expiry-fix: reflog: fix default expiry periods
commit
82ba0821b6
4
reflog.h
4
reflog.h
|
|
@ -23,8 +23,8 @@ struct reflog_expire_options {
|
|||
int recno;
|
||||
};
|
||||
#define REFLOG_EXPIRE_OPTIONS_INIT(now) { \
|
||||
.default_expire_total = now - 30 * 24 * 3600, \
|
||||
.default_expire_unreachable = now - 90 * 24 * 3600, \
|
||||
.default_expire_total = now - 90 * 24 * 3600, \
|
||||
.default_expire_unreachable = now - 30 * 24 * 3600, \
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -153,6 +153,72 @@ test_expect_success 'reflog expire should not barf on an annotated tag' '
|
|||
test_grep ! "error: [Oo]bject .* not a commit" err
|
||||
'
|
||||
|
||||
test_expect_success 'reflog expire keeps reachable entries for 90 days' '
|
||||
test_when_finished "rm -rf reachable-keep" &&
|
||||
git init reachable-keep &&
|
||||
(
|
||||
cd reachable-keep &&
|
||||
timestamp=$(test-tool date timestamp "60.days.ago") &&
|
||||
timestamp=${timestamp#* -> } &&
|
||||
test_commit --no-tag --date "$timestamp +0000" old &&
|
||||
git reflog expire --all &&
|
||||
test_stdout_line_count = 1 git reflog refs/heads/main
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'reflog expire removes reachable entries after 90 days' '
|
||||
test_when_finished "rm -rf reachable-expire" &&
|
||||
git init reachable-expire &&
|
||||
(
|
||||
cd reachable-expire &&
|
||||
timestamp=$(test-tool date timestamp "100.days.ago") &&
|
||||
timestamp=${timestamp#* -> } &&
|
||||
test_commit --no-tag --date "$timestamp +0000" old &&
|
||||
git reflog expire --all &&
|
||||
test_stdout_line_count = 0 git reflog refs/heads/main
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'reflog expire keeps unreachable entries for 30 days' '
|
||||
test_when_finished "rm -rf unreachable-keep" &&
|
||||
git init unreachable-keep &&
|
||||
(
|
||||
cd unreachable-keep &&
|
||||
test_commit --no-tag base &&
|
||||
base=$(git rev-parse HEAD) &&
|
||||
timestamp=$(test-tool date timestamp "20.days.ago") &&
|
||||
timestamp=${timestamp#* -> } &&
|
||||
test_commit --no-tag --date "$timestamp +0000" old &&
|
||||
old=$(git rev-parse HEAD) &&
|
||||
git update-ref refs/heads/main "$base" &&
|
||||
git rev-list --all --objects >reachable &&
|
||||
test_grep ! "$old" reachable &&
|
||||
git reflog expire --all &&
|
||||
git reflog --format='%H' refs/heads/main >actual &&
|
||||
test_grep "$old" actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'reflog expire removes unreachable entries after 30 days' '
|
||||
test_when_finished "rm -rf unreachable-expire" &&
|
||||
git init unreachable-expire &&
|
||||
(
|
||||
cd unreachable-expire &&
|
||||
test_commit --no-tag base &&
|
||||
base=$(git rev-parse HEAD) &&
|
||||
timestamp=$(test-tool date timestamp "40.days.ago") &&
|
||||
timestamp=${timestamp#* -> } &&
|
||||
test_commit --no-tag --date "$timestamp +0000" old &&
|
||||
old=$(git rev-parse HEAD) &&
|
||||
git update-ref refs/heads/main "$base" &&
|
||||
git rev-list --all --objects >reachable &&
|
||||
test_grep ! "$old" reachable &&
|
||||
git reflog expire --all &&
|
||||
git reflog --format='%H' refs/heads/main >actual &&
|
||||
test_grep ! "$old" actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'corrupt and check' '
|
||||
|
||||
corrupt $F &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue