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
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user