git add --all does not respect submodule.<name>.ignore
- From
- Michael Scott-Nelson <mscottnelson@gmail.com>
- Date
- Jan 30, 2018, 20:25 UTC
- Message-ID
- <CAMZgS+GT8pSx8rDy1KmzFV3LObA_bAkw25LMz5Oodb88QOXY5A@mail.gmail.com>
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.
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.
Teaching git-add about submodule.ignore and/or teaching .gitignore about submodules would be awesome.
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`. --- Note: currently on git version 2.14.1, but looking through the changelogs, did not see any changes since then that would enable this workflow.
-Michael Scott-Nelson