3 # Copyright (c) 2009 Jens Lehmann, based on t7401 by Ping Yin
6 test_description
='Support for verbose submodule differences in git diff
8 This test tries to verify the sanity of the --submodule option of git diff.
19 echo "$name" > "$name" &&
22 git commit
-m "Add $name"
24 git rev-parse
--verify HEAD | cut
-c1-7
29 git commit
"$@" -m "Commit $*" >/dev
/null
32 test_create_repo sm1
&&
33 add_file . foo
>/dev
/null
35 head1
=$
(add_file sm1 foo1 foo2
)
37 test_expect_success
'added submodule' "
39 git diff-index -p --submodule=log HEAD >actual &&
41 Submodule sm1 0000000...$head1 (new submodule)
46 head2
=$
(add_file sm1 foo3
)
48 test_expect_success
'modified submodule(forward)' "
49 git diff-index -p --submodule=log HEAD >actual &&
51 Submodule sm1 $head1..$head2:
56 test_expect_success
'modified submodule(forward)' "
57 git diff --submodule=log >actual &&
59 Submodule sm1 $head1..$head2:
64 test_expect_success
'modified submodule(forward) --submodule' "
65 git diff --submodule >actual &&
67 Submodule sm1 $head1..$head2:
72 fullhead1
=$
(cd sm1
; git rev-list
--max-count=1 $head1)
73 fullhead2
=$
(cd sm1
; git rev-list
--max-count=1 $head2)
74 test_expect_success
'modified submodule(forward) --submodule=short' "
75 git diff --submodule=short >actual &&
77 diff --git a/sm1 b/sm1
78 index $head1..$head2 160000
82 -Subproject commit $fullhead1
83 +Subproject commit $fullhead2
89 git
reset --hard HEAD~
2 >/dev
/null
&&
90 head3
=$
(git rev-parse
--verify HEAD | cut
-c1-7) &&
93 test_expect_success
'modified submodule(backward)' "
94 git diff-index -p --submodule=log HEAD >actual &&
96 Submodule sm1 $head2..$head3 (rewind):
102 head4
=$
(add_file sm1 foo4 foo5
) &&
103 head4_full
=$
(GIT_DIR
=sm
1/.git git rev-parse
--verify HEAD
)
104 test_expect_success
'modified submodule(backward and forward)' "
105 git diff-index -p --submodule=log HEAD >actual &&
107 Submodule sm1 $head2...$head4:
118 head5
=$
(git hash-object sm1 | cut
-c1-7) &&
123 test_expect_success
'typechanged submodule(submodule->blob), --cached' "
124 git diff --submodule=log --cached >actual &&
126 Submodule sm1 41fbea9...0000000 (submodule deleted)
127 diff --git a/sm1 b/sm1
129 index 0000000..9da5fb8
137 test_expect_success
'typechanged submodule(submodule->blob)' "
138 git diff --submodule=log >actual &&
140 diff --git a/sm1 b/sm1
141 deleted file mode 100644
142 index 9da5fb8..0000000
147 Submodule sm1 0000000...$head4 (new submodule)
152 git checkout-index sm1
153 test_expect_success
'typechanged submodule(submodule->blob)' "
154 git diff-index -p --submodule=log HEAD >actual &&
156 Submodule sm1 $head4...0000000 (submodule deleted)
157 diff --git a/sm1 b/sm1
159 index 0000000..$head5
168 test_create_repo sm1
&&
169 head6
=$
(add_file sm1 foo6 foo7
)
170 fullhead6
=$
(cd sm1
; git rev-list
--max-count=1 $head6)
171 test_expect_success
'nonexistent commit' "
172 git diff-index -p --submodule=log HEAD >actual &&
174 Submodule sm1 $head4...$head6 (commits not present)
179 test_expect_success
'typechanged submodule(blob->submodule)' "
180 git diff-index -p --submodule=log HEAD >actual &&
182 diff --git a/sm1 b/sm1
183 deleted file mode 100644
184 index $head5..0000000
189 Submodule sm1 0000000...$head6 (new submodule)
195 test_expect_success
'deleted submodule' "
196 git diff-index -p --submodule=log HEAD >actual &&
198 Submodule sm1 $head6...0000000 (submodule deleted)
202 test_create_repo sm2
&&
203 head7
=$
(add_file sm2 foo8 foo9
) &&
206 test_expect_success
'multiple submodules' "
207 git diff-index -p --submodule=log HEAD >actual &&
209 Submodule sm1 $head6...0000000 (submodule deleted)
210 Submodule sm2 0000000...$head7 (new submodule)
214 test_expect_success
'path filter' "
215 git diff-index -p --submodule=log HEAD sm2 >actual &&
217 Submodule sm2 0000000...$head7 (new submodule)
222 test_expect_success
'given commit' "
223 git diff-index -p --submodule=log HEAD^ >actual &&
225 Submodule sm1 $head6...0000000 (submodule deleted)
226 Submodule sm2 0000000...$head7 (new submodule)
230 test_expect_success
'given commit --submodule' "
231 git diff-index -p --submodule HEAD^ >actual &&
233 Submodule sm1 $head6...0000000 (submodule deleted)
234 Submodule sm2 0000000...$head7 (new submodule)
238 fullhead7
=$
(cd sm2
; git rev-list
--max-count=1 $head7)
240 test_expect_success
'given commit --submodule=short' "
241 git diff-index -p --submodule=short HEAD^ >actual &&
243 diff --git a/sm1 b/sm1
244 deleted file mode 160000
245 index $head6..0000000
249 -Subproject commit $fullhead6
250 diff --git a/sm2 b/sm2
252 index 0000000..$head7
256 +Subproject commit $fullhead7