You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
#!/bin/sh |
|
|
|
test_description='test fetching of oddly-named refs' |
|
. ./test-lib.sh |
|
|
|
# afterwards we will have: |
|
# HEAD - two |
|
# refs/for/refs/heads/master - one |
|
# refs/heads/master - three |
|
test_expect_success 'setup repo with odd suffix ref' ' |
|
echo content >file && |
|
git add . && |
|
git commit -m one && |
|
git update-ref refs/for/refs/heads/master HEAD && |
|
echo content >>file && |
|
git commit -a -m two && |
|
echo content >>file && |
|
git commit -a -m three && |
|
git checkout HEAD^ |
|
' |
|
|
|
test_expect_success 'suffix ref is ignored during fetch' ' |
|
git clone --bare file://"$PWD" suffix && |
|
echo three >expect && |
|
git --git-dir=suffix log -1 --format=%s refs/heads/master >actual && |
|
test_cmp expect actual |
|
' |
|
|
|
test_expect_success 'try to create repo with absurdly long refname' ' |
|
ref240=$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID && |
|
ref1440=$ref240/$ref240/$ref240/$ref240/$ref240/$ref240 && |
|
git init long && |
|
( |
|
cd long && |
|
test_commit long && |
|
test_commit master |
|
) && |
|
if git -C long update-ref refs/heads/$ref1440 long; then |
|
test_set_prereq LONG_REF |
|
else |
|
echo >&2 "long refs not supported" |
|
fi |
|
' |
|
|
|
test_expect_success LONG_REF 'fetch handles extremely long refname' ' |
|
git fetch long refs/heads/*:refs/remotes/long/* && |
|
cat >expect <<-\EOF && |
|
long |
|
master |
|
EOF |
|
git for-each-ref --format="%(subject)" refs/remotes/long >actual && |
|
test_cmp expect actual |
|
' |
|
|
|
test_expect_success LONG_REF 'push handles extremely long refname' ' |
|
git push long :refs/heads/$ref1440 && |
|
git -C long for-each-ref --format="%(subject)" refs/heads >actual && |
|
echo master >expect && |
|
test_cmp expect actual |
|
' |
|
|
|
test_done
|
|
|