Browse Source
Ping Yin noticed that "git diff-index --raw" shows 0{40} when work tree has submodule difference, but "git diff --raw" didn't correctly do so. There was a mistake in the diffcore_skip_stat_unmatch() that was meant to clean up the stat-only difference for running diff between the index and work tree and diff between the tree and the work tree, to cause it re-read from the submodule repository HEAD. When ce_stat_match() says work tree is different, we should always say 0{40} on the work tree side. This patch fixes the issue, and adds tests. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Junio C Hamano
17 years ago
2 changed files with 55 additions and 5 deletions
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
#!/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 && |
||||
diff -u expect actual |
||||
' |
||||
|
||||
test_expect_success 'git diff-index --raw HEAD' ' |
||||
git diff-index --raw HEAD >actual.index && |
||||
diff -u expect actual.index |
||||
' |
||||
|
||||
test_expect_success 'git diff-files --raw' ' |
||||
git diff-files --raw >actual.files && |
||||
diff -u expect actual.files |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue