]> git.ipfire.org Git - thirdparty/git.git/blob - t/t5503-tagfollow.sh
Documentation: user-manual: "git commit -a" doesn't motivate .gitignore
[thirdparty/git.git] / t / t5503-tagfollow.sh
1 #!/bin/sh
2
3 test_description='test automatic tag following'
4
5 . ./test-lib.sh
6
7 # End state of the repository:
8 #
9 # T - tag1 S - tag2
10 # / /
11 # L - A ------ O ------ B
12 # \ \ \
13 # \ C - origin/cat \
14 # origin/master master
15
16 test_expect_success setup '
17 test_tick &&
18 echo ichi >file &&
19 git add file &&
20 git commit -m L &&
21 L=$(git rev-parse --verify HEAD) &&
22
23 (
24 mkdir cloned &&
25 cd cloned &&
26 git init-db &&
27 git remote add -f origin ..
28 ) &&
29
30 test_tick &&
31 echo A >file &&
32 git add file &&
33 git commit -m A &&
34 A=$(git rev-parse --verify HEAD)
35 '
36
37 U=UPLOAD_LOG
38
39 cat - <<EOF >expect
40 #S
41 want $A
42 #E
43 EOF
44 test_expect_success 'fetch A (new commit : 1 connection)' '
45 rm -f $U
46 (
47 cd cloned &&
48 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
49 test $A = $(git rev-parse --verify origin/master)
50 ) &&
51 test -s $U &&
52 cut -d" " -f1,2 $U >actual &&
53 test_cmp expect actual
54 '
55
56 test_expect_success "create tag T on A, create C on branch cat" '
57 git tag -a -m tag1 tag1 $A &&
58 T=$(git rev-parse --verify tag1) &&
59
60 git checkout -b cat &&
61 echo C >file &&
62 git add file &&
63 git commit -m C &&
64 C=$(git rev-parse --verify HEAD) &&
65 git checkout master
66 '
67
68 cat - <<EOF >expect
69 #S
70 want $C
71 want $T
72 #E
73 EOF
74 test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
75 rm -f $U
76 (
77 cd cloned &&
78 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
79 test $C = $(git rev-parse --verify origin/cat) &&
80 test $T = $(git rev-parse --verify tag1) &&
81 test $A = $(git rev-parse --verify tag1^0)
82 ) &&
83 test -s $U &&
84 cut -d" " -f1,2 $U >actual &&
85 test_cmp expect actual
86 '
87
88 test_expect_success "create commits O, B, tag S on B" '
89 test_tick &&
90 echo O >file &&
91 git add file &&
92 git commit -m O &&
93
94 test_tick &&
95 echo B >file &&
96 git add file &&
97 git commit -m B &&
98 B=$(git rev-parse --verify HEAD) &&
99
100 git tag -a -m tag2 tag2 $B &&
101 S=$(git rev-parse --verify tag2)
102 '
103
104 cat - <<EOF >expect
105 #S
106 want $B
107 want $S
108 #E
109 EOF
110 test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
111 rm -f $U
112 (
113 cd cloned &&
114 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
115 test $B = $(git rev-parse --verify origin/master) &&
116 test $B = $(git rev-parse --verify tag2^0) &&
117 test $S = $(git rev-parse --verify tag2)
118 ) &&
119 test -s $U &&
120 cut -d" " -f1,2 $U >actual &&
121 test_cmp expect actual
122 '
123
124 cat - <<EOF >expect
125 #S
126 want $B
127 want $S
128 #E
129 EOF
130 test_expect_success 'new clone fetch master and tags' '
131 git branch -D cat
132 rm -f $U
133 (
134 mkdir clone2 &&
135 cd clone2 &&
136 git init &&
137 git remote add origin .. &&
138 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
139 test $B = $(git rev-parse --verify origin/master) &&
140 test $S = $(git rev-parse --verify tag2) &&
141 test $B = $(git rev-parse --verify tag2^0) &&
142 test $T = $(git rev-parse --verify tag1) &&
143 test $A = $(git rev-parse --verify tag1^0)
144 ) &&
145 test -s $U &&
146 cut -d" " -f1,2 $U >actual &&
147 test_cmp expect actual
148 '
149
150 test_done