On Tue, Jan 30, 2018 at 12:25 PM, Michael Scott-Nelson <mscottnelson@xxxxxxxxx> wrote: > Giving a submodule "ignore=all" or "ignore=dirty" in .gitmodule > successfully removes that module from `git status` queries. However, > these same diffs are automatically added by git-add, eg `git add .` or > `git add --all` adds the submodules that we want ignored. This seems > inconsistent and confusing. My prime suspect for this change would be https://github.com/git/git/commit/5556808690ea245708fb80383be5c1afee2fb3eb > Workflow reason: > We want to be able to have supers and subs checked-out, make changes > to both, but only update the SHA-1 pointer from super to sub when > explicitly forced to do so, eg `git add -f subName`. This workflow > prevents continuous merge conflicts from clashing SHA-1 pointers while > still allowing `git add --all`, allowing a sort of middle ground > between submodules and an untracked library. For that you want to set the ignore flag locally in .git/config instead of .gitmodules. The .gitmodules seems like a convenient place to "share submodule config", but that is a slippery slope and I think that was a mistake by the project. (If you control the environment, you could also put the ignore flags into the system wide config) > Teaching git-add about submodule.ignore and/or teaching .gitignore > about submodules would be awesome. I wonder if we can address this issue with even more config options. (sounds bad, but is the first thought I have) > Also experimented with `git update-index --assume-unchanged subName`, > but I believe that it does not get committed and besides also does not > seem to have a way to `git add -f`. The assume-unchanged bit is a performance optimisation for powerusers, but its documentation words it in a less dangerous way, such that it sounds as if it is a UX feature instead of a performance thing. I'd stay away from that know. Stefan