diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-11-06 18:52:31 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-06 18:52:32 (GMT) |
commit | a1671dd82b5e1c6e837a3f47509a3a33189b0884 (patch) | |
tree | 7481de8581bc9b94b6059333009e4c155a75dd99 /t | |
parent | 6b55f8b54601c6e6319566875b104d333930bc76 (diff) | |
parent | 9233887cce8eaebd8469315622b84bd26910351f (diff) | |
download | git-a1671dd82b5e1c6e837a3f47509a3a33189b0884.zip git-a1671dd82b5e1c6e837a3f47509a3a33189b0884.tar.gz git-a1671dd82b5e1c6e837a3f47509a3a33189b0884.tar.bz2 |
Merge branch 'jk/fetch-reflog-df-conflict'
Corner-case bugfixes for "git fetch" around reflog handling.
* jk/fetch-reflog-df-conflict:
ignore stale directories when checking reflog existence
fetch: load all default config at startup
Diffstat (limited to 't')
-rwxr-xr-x | t/t1410-reflog.sh | 34 | ||||
-rwxr-xr-x | t/t5516-fetch-push.sh | 40 |
2 files changed, 74 insertions, 0 deletions
diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh index 8cab06f..976c1d4 100755 --- a/t/t1410-reflog.sh +++ b/t/t1410-reflog.sh @@ -253,4 +253,38 @@ test_expect_success 'checkout should not delete log for packed ref' ' 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 a || git branch -d a/b" && + + git branch a/b master && + echo "a/b@{0} branch: Created from master" >expect && + git log -g --format="%gd %gs" a/b >actual && + test_cmp expect actual && + git branch -d a/b && + + # now logs/refs/heads/a is a stale directory, but + # we should move it out of the way to create "a" reflog + git branch a master && + echo "a@{0} branch: Created from master" >expect && + git log -g --format="%gd %gs" a >actual && + test_cmp expect actual +' + +test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' ' + test_when_finished "git branch -d a || git branch -d a/b" && + + git branch a/b master && + echo "a/b@{0} branch: Created from master" >expect && + git log -g --format="%gd %gs" a/b >actual && + test_cmp expect actual && + git branch -d a/b && + + # same as before, but we only create a reflog for "a" if + # it already exists, which it does not + git -c core.logallrefupdates=false branch a master && + : >expect && + git log -g --format="%gd %gs" a >actual && + test_cmp expect actual +' + test_done diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh index 7c8a769..f4da20a 100755 --- a/t/t5516-fetch-push.sh +++ b/t/t5516-fetch-push.sh @@ -11,6 +11,7 @@ This test checks the following functionality: * hooks * --porcelain output format * hiderefs +* reflogs ' . ./test-lib.sh @@ -1290,4 +1291,43 @@ test_expect_success 'pushing a tag pushes the tagged object' ' test_cmp expect actual ' +test_expect_success 'push into bare respects core.logallrefupdates' ' + rm -rf dst.git && + git init --bare dst.git && + git -C dst.git config core.logallrefupdates true && + + # double push to test both with and without + # the actual pack transfer + git push dst.git master:one && + echo "one@{0} push" >expect && + git -C dst.git log -g --format="%gd %gs" one >actual && + test_cmp expect actual && + + git push dst.git master:two && + echo "two@{0} push" >expect && + git -C dst.git log -g --format="%gd %gs" two >actual && + test_cmp expect actual +' + +test_expect_success 'fetch into bare respects core.logallrefupdates' ' + rm -rf dst.git && + git init --bare dst.git && + ( + cd dst.git && + git config core.logallrefupdates true && + + # as above, we double-fetch to test both + # with and without pack transfer + git fetch .. master:one && + echo "one@{0} fetch .. master:one: storing head" >expect && + git log -g --format="%gd %gs" one >actual && + test_cmp expect actual && + + git fetch .. master:two && + echo "two@{0} fetch .. master:two: storing head" >expect && + git log -g --format="%gd %gs" two >actual && + test_cmp expect actual + ) +' + test_done |