git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marc Sune <marcdevel@gmail.com>
To: Philippe Blain <levraiphilippeblain@gmail.com>
Cc: Git mailing list <git@vger.kernel.org>
Subject: Re: git diff --submodule=diff and --stat/--dirstat/--name-only
Date: Wed, 14 Oct 2020 16:35:25 +0200	[thread overview]
Message-ID: <CA+3n-Tpb4BGM5W3e5vHwqkU-Tnh2gs0_K1ciEcJ25SnYe5PTOw@mail.gmail.com> (raw)
In-Reply-To: <E3D98950-2EA1-4BFE-8A2D-CE8AEAF5AD39@gmail.com>

Philippe,

Missatge de Philippe Blain <levraiphilippeblain@gmail.com> del dia
dc., 14 d’oct. 2020 a les 15:29:
>
> Hi Marc,
>
> > Le 14 oct. 2020 à 06:14, Marc Sune <marcdevel@gmail.com> a écrit :
> >
> > Hello all,
> >
> > First, thank you to the community for the great work. Worth saying it
> > from time to time, I think.
> >
> > I am dealing with a couple of big repositories that use git
> > submodules. They have nested submodules, and some of them are pretty
> > huge. I came across:
> >
> > git diff --submodule=diff
> >
> > Which is very handy for creating some tooling, but it's obviously slow
> > - in the order of tens of minutes in my case - for big diffs. I was
> > only interested in the list files that changed, in this particular
> > case, but:
> >
> > git diff --stat --submodule=diff
> >
> > doesn't seem to honour `--submodule=diff` and it doesn't go into the
> > submodule(s) nor recurses, of course. Other options like `--dirstat`
> > or `--name-only` seem to behave the same way.
> >
> > I've tried this v2.20.1 and the HEAD of master (d4a392452e) with the
> > same results. Is this a missing feature, a bug or is it just the
> > intended behaviour?
> >
> > Regards
> > marc
>
> This would indeed be useful. It's a missing feature, and so intended behaviour
> for the moment, I would say. It was discussed recently on the list [1] :
>
>
> [1] https://lore.kernel.org/git/20200924063829.GA1851751@coredump.intra.peff.net/t/#u

Thank you for the pointer and the clarification.

I am not sure extending `git diff` options (only) under
`--submodule=`, e.g. `--submodule=stat` is the way to go. It seems
redundant to me.

I am wondering if it would make sense to have basic options of git
commands, e.g. `git diff --stat`, be honoured for submodules too, and
just control whether git commands should get in the submodule(s) or
not, and perhaps the depth of the recursion (optionally).

For instance, I don't fully get the use-case(s) in which parts of the
output are --stat (supermodule) and submodules show something
different:

git diff --stat --submodule=diff
git diff --stat --submodule=log

Specially for log, this sounds to me like it should be under `git
log`, with the appropriate options. Perhaps you can shed some light on
the use-cases these combinations support.

I would think something like:

git diff --stat --submodule-follow
git diff --stat --submodule-follow-depth=4

git diff --names-only --submodule-follow
git diff --dirstat --submodule-follow

and for other commands (some sort of header line should be printed to
note the history is under the submodule X):

git log --submodule-follow
git log --submodule-follow-depth=4

and of course allowing `--` modifier:

git log --submodule-follow -- libs/library1

would be easier to use.

Let me know if any of this resonates, and if some patches along these
lines would be welcomed (might ask some help offlist).

Regards
marc

>
> Cheers,
>
> Philippe.
>

  reply	other threads:[~2020-10-14 14:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-14 10:14 git diff --submodule=diff and --stat/--dirstat/--name-only Marc Sune
2020-10-14 13:29 ` Philippe Blain
2020-10-14 14:35   ` Marc Sune [this message]
2020-10-14 22:51     ` Philippe Blain
2020-10-14 22:59       ` Marc Sune

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+3n-Tpb4BGM5W3e5vHwqkU-Tnh2gs0_K1ciEcJ25SnYe5PTOw@mail.gmail.com \
    --to=marcdevel@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=levraiphilippeblain@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).