Subject: Re: [PATCH v2.1] commit: add --ignore-submodules[=<when>] parameter

From: Jens Lehmann <[email-masked]>
Date: Wed, 02 Apr 2014 20:53:49 +0200

Am 01.04.2014 23:59, schrieb Ronald Weiss:
> On 1. 4. 2014 22:23, Jens Lehmann wrote:
>> Am 01.04.2014 01:35, schrieb Ronald Weiss:
>>> On 1. 4. 2014 0:50, Ronald Weiss wrote:
>>>> On 31. 3. 2014 23:47, Ronald Weiss wrote:
>>>>> On Mon, Mar 31, 2014 at 8:58 PM, Jens Lehmann <[email-masked]> wrote:
>>>>>> As Junio mentioned it would be great if you could teach the add
>>>>>> command also honor the --ignore-submodule command line option in
>>>>>> a companion patch. In the course of doing so you'll easily see if
>>>>>> I was right or not, then please just order them in the most logical
>>>>>> way.
>>>>>
>>>>> Well, if You (or Junio) really don't want my patch without another one
>>>>> for git add, I may try to do it. However, git add does not even honor
>>>>> the submodules' ignore setting from .gitmodules (just tested with git
>>>>> 1.9.1: "git add -u" doesn't honor it, while "git commit -a" does). So
>>>>> teaching git add the --ignore-submodules switch in current state
>>>>> doesn't seem right to me. You might propose to add also support for
>>>>> the ignore setting, to make "add -u" and "commit -a" more consistent.
>>>>> That seems like a good idea, but the effort needed is getting bigger,
>>>>
>>>> Well, now I actually looked at it, and it was pretty easy after all.
>>>> The changes below seem to enable support for both ignore setting in
>>>> .gitmodules, and also --ignore-submodules switch, for git add, on top
>>>> of my patch for commit.
>>>
>>> There is a catch. With the changes below, submodules are ignored by add even if explitely named on command line (eg. "git add x" does nothing if x is submodule with new commits, but with ignore=all in .gitmodules).
>>> That doesn't seem right.
>>>
>>> Any ideas, what to do about that? When exactly should such submodule be actually ignored?
>>
>> Me thinks git add should require the '-f' option to add an ignored
>> submodule (just like it does for files) unless the user uses the
>> '--ignore-submodules=none' option. And if neither of these are given
>> it should "fail with a list of ignored files" as the documentation
>> states.
> 
> It's still not clear, at least not to me. Should '-f' suppress the
> ignore setting of all involved submodules? That would make it a
> synonyme (or a superset) of --ignore-submodules=none. Or only if the
> submodule is explicitly named on command line? That seems fuzzy to me,
> and also more tricky to implement.

Maybe my impression that doing "add" together with "commit" would be
easy wasn't correct after all. I won't object if you try to tackle
commit first (but I have the slight suspicion that similar questions
will arise concerning the "add"ish functionality in commit too. So
maybe after resolving those things might look clearer ;-)