Merge branch 'sb/show-diff-for-submodule-in-diff-fix'
"git diff --submodule=diff" learned to work better in a project with a submodule that in turn has its own submodules. * sb/show-diff-for-submodule-in-diff-fix: diff: submodule inline diff to initialize env array.
This commit is contained in:
commit
1776a710d6
@ -576,6 +576,7 @@ void show_submodule_inline_diff(FILE *f, const char *path,
|
||||
if (!(dirty_submodule & DIRTY_SUBMODULE_MODIFIED))
|
||||
argv_array_push(&cp.args, oid_to_hex(new));
|
||||
|
||||
prepare_submodule_repo_env(&cp.env_array);
|
||||
if (run_command(&cp))
|
||||
fprintf(f, "(diff failed)\n");
|
||||
|
||||
|
@ -746,4 +746,33 @@ test_expect_success 'diff --submodule=diff with .git file' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup nested submodule' '
|
||||
git submodule add -f ./sm2 &&
|
||||
git commit -a -m "add sm2" &&
|
||||
git -C sm2 submodule add ../sm2 nested &&
|
||||
git -C sm2 commit -a -m "nested sub"
|
||||
'
|
||||
|
||||
test_expect_success 'move nested submodule HEAD' '
|
||||
echo "nested content" >sm2/nested/file &&
|
||||
git -C sm2/nested add file &&
|
||||
git -C sm2/nested commit --allow-empty -m "new HEAD"
|
||||
'
|
||||
|
||||
test_expect_success 'diff --submodule=diff with moved nested submodule HEAD' '
|
||||
cat >expected <<-EOF &&
|
||||
Submodule nested a5a65c9..b55928c:
|
||||
diff --git a/nested/file b/nested/file
|
||||
new file mode 100644
|
||||
index 0000000..ca281f5
|
||||
--- /dev/null
|
||||
+++ b/nested/file
|
||||
@@ -0,0 +1 @@
|
||||
+nested content
|
||||
EOF
|
||||
git -C sm2 diff --submodule=diff >actual 2>err &&
|
||||
test_must_be_empty err &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user