git diff --submodule=diff fails with submodules in a submodule

4 messages, 3 authors, 2017-03-31 · open the first message on its own page

git diff --submodule=diff fails with submodules in a submodule

From: David Parrish <hidden>
Date: 2017-03-31 15:40:54

When I try to run `git diff --submodule=diff` in a submodule which has
it's own submodules that have changes I get the error: fatal: bad
object

Let me know if you need an example reproduce the issue.

David

Re: git diff --submodule=diff fails with submodules in a submodule

From: Stefan Beller <hidden>
Date: 2017-03-31 17:07:16

+cc Jacob, who implemented --submodule=diff

On Fri, Mar 31, 2017 at 8:40 AM, David Parrish [off-list ref] wrote:
When I try to run `git diff --submodule=diff` in a submodule which has
it's own submodules that have changes I get the error: fatal: bad
object
Thanks for the bug report!
Let me know if you need an example reproduce the issue.
I could reproduce it when playing around locally with a submodule in
submodules. I think sub-submodule needs to have its HEAD moved from
the recorded commit.

Thanks,
Stefan

Re: git diff --submodule=diff fails with submodules in a submodule

From: Jacob Keller <hidden>
Date: 2017-03-31 17:32:19

On Fri, Mar 31, 2017 at 10:07 AM, Stefan Beller [off-list ref] wrote:
+cc Jacob, who implemented --submodule=diff

On Fri, Mar 31, 2017 at 8:40 AM, David Parrish [off-list ref] wrote:
quoted
When I try to run `git diff --submodule=diff` in a submodule which has
it's own submodules that have changes I get the error: fatal: bad
object
Thanks for the bug report!
quoted
Let me know if you need an example reproduce the issue.
I could reproduce it when playing around locally with a submodule in
submodules. I think sub-submodule needs to have its HEAD moved from
the recorded commit.

Thanks,
Stefan
Hmm. An example reproduction would be helpful. Ideally in the form of
a test ;) But otherwise whatever helps. I will try to look at this,
but I'm  busy for a few days.

Thanks,
Jake

[PATCH] failure with diff --submodule=diff with moved nested submodule HEAD

From: Stefan Beller <hidden>
Date: 2017-03-31 18:00:14

This fails reliable for me.

Signed-off-by: Stefan Beller <redacted>
---
 t/t4060-diff-submodule-option-diff-format.sh | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff --git a/t/t4060-diff-submodule-option-diff-format.sh b/t/t4060-diff-submodule-option-diff-format.sh
index 7e23b55ea4..89bced3484 100755
--- a/t/t4060-diff-submodule-option-diff-format.sh
+++ b/t/t4060-diff-submodule-option-diff-format.sh
@@ -746,4 +746,20 @@ 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 &&
+	git -C sm2 commit -a -m "nested sub"
+'
+
+test_expect_success 'move nested submodule HEAD' '
+	git -C sm2/sm2 commit --allow-empty -m "new HEAD"
+'
+
+test_expect_success 'diff --submodule=diff with moved nested submodule HEAD' '
+	git -C sm2 diff --submodule=diff >actual 2>err &&
+	test_must_be_empty err
+'
+
 test_done
-- 
2.12.2.511.g2abb8caf66
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help