]>
Commit | Line | Data |
---|---|---|
1e7ba0f9 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='test fetching of oddly-named refs' | |
334afbc7 JS |
4 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master |
5 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME | |
6 | ||
1e7ba0f9 JK |
7 | . ./test-lib.sh |
8 | ||
9 | # afterwards we will have: | |
10 | # HEAD - two | |
11 | # refs/for/refs/heads/master - one | |
12 | # refs/heads/master - three | |
13 | test_expect_success 'setup repo with odd suffix ref' ' | |
14 | echo content >file && | |
15 | git add . && | |
16 | git commit -m one && | |
17 | git update-ref refs/for/refs/heads/master HEAD && | |
18 | echo content >>file && | |
19 | git commit -a -m two && | |
20 | echo content >>file && | |
21 | git commit -a -m three && | |
22 | git checkout HEAD^ | |
23 | ' | |
24 | ||
25 | test_expect_success 'suffix ref is ignored during fetch' ' | |
26 | git clone --bare file://"$PWD" suffix && | |
27 | echo three >expect && | |
28 | git --git-dir=suffix log -1 --format=%s refs/heads/master >actual && | |
29 | test_cmp expect actual | |
30 | ' | |
31 | ||
8e9faf27 | 32 | test_expect_success 'try to create repo with absurdly long refname' ' |
8125a58b | 33 | ref240=$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID && |
8e9faf27 JK |
34 | ref1440=$ref240/$ref240/$ref240/$ref240/$ref240/$ref240 && |
35 | git init long && | |
36 | ( | |
37 | cd long && | |
38 | test_commit long && | |
39 | test_commit master | |
40 | ) && | |
41 | if git -C long update-ref refs/heads/$ref1440 long; then | |
42 | test_set_prereq LONG_REF | |
43 | else | |
44 | echo >&2 "long refs not supported" | |
45 | fi | |
46 | ' | |
47 | ||
48 | test_expect_success LONG_REF 'fetch handles extremely long refname' ' | |
49 | git fetch long refs/heads/*:refs/remotes/long/* && | |
50 | cat >expect <<-\EOF && | |
51 | long | |
52 | master | |
53 | EOF | |
54 | git for-each-ref --format="%(subject)" refs/remotes/long >actual && | |
55 | test_cmp expect actual | |
56 | ' | |
57 | ||
58 | test_expect_success LONG_REF 'push handles extremely long refname' ' | |
59 | git push long :refs/heads/$ref1440 && | |
60 | git -C long for-each-ref --format="%(subject)" refs/heads >actual && | |
61 | echo master >expect && | |
62 | test_cmp expect actual | |
63 | ' | |
64 | ||
1e7ba0f9 | 65 | test_done |