Merge branch 'jk/diff-submodule-diff-inline'

"git diff --submodule=diff" now recurses into nested submodules.

* jk/diff-submodule-diff-inline:
  diff: recurse into nested submodules for inline diff
This commit is contained in:
Junio C Hamano 2017-05-29 12:34:42 +09:00
commit a531ecf399
2 changed files with 43 additions and 1 deletions

View file

@ -554,7 +554,8 @@ void show_submodule_inline_diff(FILE *f, const char *path,
cp.no_stdin = 1;
/* TODO: other options may need to be passed here. */
argv_array_push(&cp.args, "diff");
argv_array_pushl(&cp.args, "diff", "--submodule=diff", NULL);
argv_array_pushf(&cp.args, "--line-prefix=%s", line_prefix);
if (DIFF_OPT_TST(o, REVERSE_DIFF)) {
argv_array_pushf(&cp.args, "--src-prefix=%s%s/",

View file

@ -775,4 +775,45 @@ test_expect_success 'diff --submodule=diff with moved nested submodule HEAD' '
test_cmp expected actual
'
test_expect_success 'diff --submodule=diff recurses into nested submodules' '
cat >expected <<-EOF &&
Submodule sm2 contains modified content
Submodule sm2 a5a65c9..280969a:
diff --git a/sm2/.gitmodules b/sm2/.gitmodules
new file mode 100644
index 0000000..3a816b8
--- /dev/null
+++ b/sm2/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "nested"]
+ path = nested
+ url = ../sm2
Submodule nested 0000000...b55928c (new submodule)
diff --git a/sm2/nested/file b/sm2/nested/file
new file mode 100644
index 0000000..ca281f5
--- /dev/null
+++ b/sm2/nested/file
@@ -0,0 +1 @@
+nested content
diff --git a/sm2/nested/foo8 b/sm2/nested/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/nested/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/nested/foo9 b/sm2/nested/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/nested/foo9
@@ -0,0 +1 @@
+foo9
EOF
git diff --submodule=diff >actual 2>err &&
test_must_be_empty err &&
test_cmp expected actual
'
test_done