threads / discuss / 45566

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

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

## tl;dr

5 messages between Mar 31, 2017 and Mar 31, 2017.

replies: 4people: 4as markdown or json

David Parrish· Mar 31, 2017, 15:40 UTC · lore

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
Stefan Beller· Mar 31, 2017, 17:07 UTC · re: David Parrish · lore

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

+cc Jacob, who implemented --submodule=diff
On Fri, Mar 31, 2017 at 8:40 AM, David Parrish <daveparrish@gmail.com> 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

Jacob Keller· Mar 31, 2017, 17:31 UTC · re: Stefan Beller · lore

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

On Fri, Mar 31, 2017 at 10:07 AM, Stefan Beller <sbeller@google.com> wrote:
Show 17 quoted lines
> +cc Jacob, who implemented --submodule=diff
>
> On Fri, Mar 31, 2017 at 8:40 AM, David Parrish <daveparrish@gmail.com> 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

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

Stefan Beller· Mar 31, 2017, 17:59 UTC · re: Jacob Keller · lore

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

This fails reliable for me.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 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
Junio C Hamano· Mar 31, 2017, 19:38 UTC · re: Stefan Beller · lore

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

Stefan Beller <sbeller@google.com> writes:
> This fails reliable for me.
>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---

I take it that this is a WIP for the testing half of the patch you are working on (i.e. you are not just throwing a patch to document known breakage to be fixed later, in which case these would have been _expect_failure).

Thanks.
Show 28 quoted lines
>  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

← back to recent threads