7dae8b21c2
The combine diff logic knew only about blobs (and their checked-out form in the work tree, either regular files or symlinks), and barfed when fed submodules. This "externalizes" gitlinks in the same way as the normal patch generation codepath does (i.e. "Subproject commit Xxx\n") to fix the issue. Signed-off-by: Junio C Hamano <gitster@pobox.com>
100 lines
2.0 KiB
Bash
Executable File
100 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='difference in submodules'
|
|
|
|
. ./test-lib.sh
|
|
. ../diff-lib.sh
|
|
|
|
_z40=0000000000000000000000000000000000000000
|
|
test_expect_success setup '
|
|
test_tick &&
|
|
test_create_repo sub &&
|
|
(
|
|
cd sub &&
|
|
echo hello >world &&
|
|
git add world &&
|
|
git commit -m submodule
|
|
) &&
|
|
|
|
test_tick &&
|
|
echo frotz >nitfol &&
|
|
git add nitfol sub &&
|
|
git commit -m superproject &&
|
|
|
|
(
|
|
cd sub &&
|
|
echo goodbye >world &&
|
|
git add world &&
|
|
git commit -m "submodule #2"
|
|
) &&
|
|
|
|
set x $(
|
|
cd sub &&
|
|
git rev-list HEAD
|
|
) &&
|
|
echo ":160000 160000 $3 $_z40 M sub" >expect
|
|
'
|
|
|
|
test_expect_success 'git diff --raw HEAD' '
|
|
git diff --raw --abbrev=40 HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git diff-index --raw HEAD' '
|
|
git diff-index --raw HEAD >actual.index &&
|
|
test_cmp expect actual.index
|
|
'
|
|
|
|
test_expect_success 'git diff-files --raw' '
|
|
git diff-files --raw >actual.files &&
|
|
test_cmp expect actual.files
|
|
'
|
|
|
|
test_expect_success 'git diff (empty submodule dir)' '
|
|
: >empty &&
|
|
rm -rf sub/* sub/.git &&
|
|
git diff > actual.empty &&
|
|
test_cmp empty actual.empty
|
|
'
|
|
|
|
test_expect_success 'conflicted submodule setup' '
|
|
|
|
# 39 efs
|
|
c=fffffffffffffffffffffffffffffffffffffff
|
|
(
|
|
echo "000000 $_z40 0 sub"
|
|
echo "160000 1$c 1 sub"
|
|
echo "160000 2$c 2 sub"
|
|
echo "160000 3$c 3 sub"
|
|
) | git update-index --index-info &&
|
|
echo >expect.nosub '\''diff --cc sub
|
|
index 2ffffff,3ffffff..0000000
|
|
--- a/sub
|
|
+++ b/sub
|
|
@@@ -1,1 -1,1 +1,1 @@@
|
|
- Subproject commit 2fffffffffffffffffffffffffffffffffffffff
|
|
-Subproject commit 3fffffffffffffffffffffffffffffffffffffff
|
|
++Subproject commit 0000000000000000000000000000000000000000'\'' &&
|
|
|
|
hh=$(git rev-parse HEAD) &&
|
|
sed -e "s/$_z40/$hh/" expect.nosub >expect.withsub
|
|
|
|
'
|
|
|
|
test_expect_success 'combined (empty submodule)' '
|
|
rm -fr sub && mkdir sub &&
|
|
git diff >actual &&
|
|
test_cmp expect.nosub actual
|
|
'
|
|
|
|
test_expect_success 'combined (with submodule)' '
|
|
rm -fr sub &&
|
|
git clone --no-checkout . sub &&
|
|
git diff >actual &&
|
|
test_cmp expect.withsub actual
|
|
'
|
|
|
|
|
|
|
|
test_done
|