Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long'
[gitweb.git] / t / t1410-reflog.sh
index e582c0182bba81316352dc69e1cc7c6b664c68e9..779d4e3829b29d7092d54f6e342f923f0d239b96 100755 (executable)
@@ -245,6 +245,48 @@ test_expect_success 'gc.reflogexpire=false' '
 
 '
 
+test_expect_success 'checkout should not delete log for packed ref' '
+       test $(git reflog master | wc -l) = 4 &&
+       git branch foo &&
+       git pack-refs --all &&
+       git checkout foo &&
+       test $(git reflog master | wc -l) = 4
+'
+
+test_expect_success 'stale dirs do not cause d/f conflicts (reflogs on)' '
+       test_when_finished "git branch -d one || git branch -d one/two" &&
+
+       git branch one/two master &&
+       echo "one/two@{0} branch: Created from master" >expect &&
+       git log -g --format="%gd %gs" one/two >actual &&
+       test_cmp expect actual &&
+       git branch -d one/two &&
+
+       # now logs/refs/heads/one is a stale directory, but
+       # we should move it out of the way to create "one" reflog
+       git branch one master &&
+       echo "one@{0} branch: Created from master" >expect &&
+       git log -g --format="%gd %gs" one >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' '
+       test_when_finished "git branch -d one || git branch -d one/two" &&
+
+       git branch one/two master &&
+       echo "one/two@{0} branch: Created from master" >expect &&
+       git log -g --format="%gd %gs" one/two >actual &&
+       test_cmp expect actual &&
+       git branch -d one/two &&
+
+       # same as before, but we only create a reflog for "one" if
+       # it already exists, which it does not
+       git -c core.logallrefupdates=false branch one master &&
+       : >expect &&
+       git log -g --format="%gd %gs" one >actual &&
+       test_cmp expect actual
+'
+
 # Triggering the bug detected by this test requires a newline to fall
 # exactly BUFSIZ-1 bytes from the end of the file. We don't know
 # what that value is, since it's platform dependent. However, if