threads / discuss / 54276

git diff --name-only --submodule=diff combination does not work

Subject: git diff --name-only --submodule=diff combination does not work

## tl;dr

4 messages between Sep 22, 2020 and Sep 24, 2020.

replies: 3people: 2as markdown or json

Jeff King· Sep 22, 2020, 21:24 UTC · re: Ilan Biala · lore

Re: git diff --name-only --submodule=diff combination does not work

On Tue, Sep 22, 2020 at 04:56:45PM -0400, Ilan Biala wrote:
> I've been running into issues with using the --name-only and
> --submodule=diff flags together in Git 2.27.0. Is this a known bug?
What did you expect it to do, and what did it do instead?

I'm not very familiar with the --submodule flag, but it looks like it only impacts "--patch" output. E.g., in git.git (with the submodule actually populated):

  $ git log --oneline --submodule=diff -p sha1collisiondetection
  4125f78222 sha1dc: update from upstream
  Submodule sha1collisiondetection 16033998da..855827c583:
    > Detect endianess on HP-UX
  07a20f569b Makefile: fix unaligned loads in sha1dc with UBSan
  Submodule sha1collisiondetection 232357eb2e..16033998da:
    > Shorter version of force aligned access.
    > Add compiler option to force aligned access even for Intel CPUs.
  23e37f8e9d sha1dc: update from upstream
  Submodule sha1collisiondetection 19d97bf5af..232357eb2e:
    > Merge pull request #45 from avar/aix-big-endian-detection
    > sha1c: fix a trivial spelling error
  86cfd61e6b sha1dc: optionally use sha1collisiondetection as a submodule
  Submodule sha1collisiondetection 0000000000...19d97bf5af (new submodule)
  $ git log --oneline --submodule=log --raw sha1collisiondetection
  4125f78222 sha1dc: update from upstream
  :160000 160000 16033998da 855827c583 M  sha1collisiondetection
  07a20f569b Makefile: fix unaligned loads in sha1dc with UBSan
  :160000 160000 232357eb2e 16033998da M  sha1collisiondetection
  23e37f8e9d sha1dc: update from upstream
  :160000 160000 19d97bf5af 232357eb2e M  sha1collisiondetection
  86cfd61e6b sha1dc: optionally use sha1collisiondetection as a submodule
  :000000 160000 0000000000 19d97bf5af A  sha1collisiondetection
-Peff
Ilan Biala· Sep 22, 2020, 21:32 UTC · re: Jeff King · lore

Re: git diff --name-only --submodule=diff combination does not work

I expected adding --submodule=diff to add all the filenames in submodules that were modified, but the output just shows the submodule folder name, not all the files within the submodule that were modified.

On Tue, Sep 22, 2020 at 5:24 PM Jeff King <peff@peff.net> wrote:
Show 38 quoted lines
>
> On Tue, Sep 22, 2020 at 04:56:45PM -0400, Ilan Biala wrote:
>
> > I've been running into issues with using the --name-only and
> > --submodule=diff flags together in Git 2.27.0. Is this a known bug?
>
> What did you expect it to do, and what did it do instead?
>
> I'm not very familiar with the --submodule flag, but it looks like it
> only impacts "--patch" output. E.g., in git.git (with the submodule
> actually populated):
>
>   $ git log --oneline --submodule=diff -p sha1collisiondetection
>   4125f78222 sha1dc: update from upstream
>   Submodule sha1collisiondetection 16033998da..855827c583:
>     > Detect endianess on HP-UX
>   07a20f569b Makefile: fix unaligned loads in sha1dc with UBSan
>   Submodule sha1collisiondetection 232357eb2e..16033998da:
>     > Shorter version of force aligned access.
>     > Add compiler option to force aligned access even for Intel CPUs.
>   23e37f8e9d sha1dc: update from upstream
>   Submodule sha1collisiondetection 19d97bf5af..232357eb2e:
>     > Merge pull request #45 from avar/aix-big-endian-detection
>     > sha1c: fix a trivial spelling error
>   86cfd61e6b sha1dc: optionally use sha1collisiondetection as a submodule
>   Submodule sha1collisiondetection 0000000000...19d97bf5af (new submodule)
>
>   $ git log --oneline --submodule=log --raw sha1collisiondetection
>   4125f78222 sha1dc: update from upstream
>   :160000 160000 16033998da 855827c583 M  sha1collisiondetection
>   07a20f569b Makefile: fix unaligned loads in sha1dc with UBSan
>   :160000 160000 232357eb2e 16033998da M  sha1collisiondetection
>   23e37f8e9d sha1dc: update from upstream
>   :160000 160000 19d97bf5af 232357eb2e M  sha1collisiondetection
>   86cfd61e6b sha1dc: optionally use sha1collisiondetection as a submodule
>   :000000 160000 0000000000 19d97bf5af A  sha1collisiondetection
>
> -Peff
Jeff King· Sep 24, 2020, 06:38 UTC · re: Ilan Biala · lore

Re: git diff --name-only --submodule=diff combination does not work

On Tue, Sep 22, 2020 at 05:32:12PM -0400, Ilan Biala wrote:
> I expected adding --submodule=diff to add all the filenames in
> submodules that were modified, but the output just shows the submodule
> folder name, not all the files within the submodule that were
> modified.

OK. That does sound like a useful thing to show, but AFAIK there is not currently a way to do so. Formats like --name-only and --raw are capable of showing a diff for the submodule entry itself, so they do. And we'd want to continue to be able to do that even when the diff.submodule config option is set. So I suspect it would need to be something like --submodule=name-only. I.e., allowing any diff format to be passed there.

-Peff

← back to recent threads