Subject: Re: git-status does not propagate -uall to submodules

From: Jens Lehmann <[email-masked]>
Date: Fri, 17 Feb 2012 23:11:06 +0100

Am 17.02.2012 10:18, schrieb Thomas Rast:
> Hi,
> 
> While helping with the submodule display on #git I noticed that if you
> have a submodule with status.showuntrackedfiles=no, and run 'git status
> -uall' from the superproject, then this does not propagate into the
> submodule's status.  In code:
> 
>   $ (cd bar && git config status.showuntrackedfiles)                  
>   no                                                                                                 
>   $ git ls-files -s                                                   
>   100644 926c01b7259c489a422442a8dc5cb5ea7c58f60c 0       .gitmodules                                
>   160000 eb5af46e1a938d064c9f7bae9561013654a43316 0       bar                                        
>   $ (cd bar && git status -s -unormal)
>   ?? otheruntracked                                                                                  
>   ?? untracked
>   $ git status
>   # On branch master
>   nothing to commit (working directory clean)
> 
> So far that's expected; after all the submodule is configured not to
> display untracked files.  But with -uall:
> 
>   $ git status -uall
>   # On branch master
>   nothing to commit (working directory clean)
> 
> Shouldn't the -uall propagate, since the user is explicitly asking for
> it?  That is, the display should summarize what git-status *with the
> same arguments* would show inside the submodules?

Yes, that makes sense. In 3bfc45047 (git status: ignoring untracked
files must apply to submodules too) I added that using -uno will
propagate into submodules. But -uall (and I suspect -unormal too)
should also be passed to the status commands forked inside the
submodules (even though in both cases -unormal should suffice as only
the presence or absence of untracked files will be shown anyway).

But opposed to -uno, which overrides any diff.ignoreSubmodules or
submodule.<name>.ignore settings for the submodules, what should
-unormal and -uall do? These options are used to override the
status.showuntrackedfiles setting, so I suspect even when these
options are given submodules which are configured to ignore untracked
files via diff.ignoreSubmodules or submodule.<name>.ignore should
still be dropped, right?