On Tue, Feb 28, 2017 at 12:21:57PM -0800, Stefan Beller wrote: > > I'm still open to the idea that we simply improve the documentation to > > make it clear that per-repo config really is per-repo, and is not shared > > between super-projects and submodules. And then something like Duy's > > proposed conditional config lets you set global config that flexibly > > covers a set of repos. > > How would the workflow for that look like? > My naive thought on that is: > > (1) $EDIT .git/config_to_be_included > (2) $ git config add-config-inclusion .git/config_to_be_included > (3) $ git submodule foreach git config add-inclusion-config > .git/config_to_be_included > > which sounds a bit cumbersome to me. > So I guess we'd want some parts of that as part of another command, e.g. > (3) could be part of (2). I think it would be more like: (1) $EDIT ~/.gitconfig-super (2) git config --global \ includeIf.gitdir:/path/to/super.path .gitconfig-super I know that is probably a bit more cumbersome to figure out than treating the super/sub relationship in a special way. But I suspect for a lot of cases that it actually ends up even better, because the situation is more like: (1) $EDIT ~/.gitconfig-work (2) git config --global includeIf.gitdir:~/work.path .gitconfig-work and then it covers all of your projects in ~/work, whether they are super-projects, submodules, or regular repos. > I am also open and willing to document this better; but were would > we want to put documentation? Obviously we would not want to put it > alongside each potentially useful config option to be inherited to > submodules. (that would imply repeating ourselves quite a lot in > the config man page). > > I guess putting it into "man gitmodules" that I was writing tentatively > would make sense. Yeah, I think it is worth mentioning in "gitmodules", and probably in git-config where we define per-repo config. It may also be worth calling it out especially for url.insteadOf, just because it is not clear there when the URL rewriting happens (it's not insane to think that it happens in the super-project, that just doesn't happen to be how it's implemented). -Peff