From: Stefan Beller Date: Wed, 18 Apr 2018 18:44:26 GMT Subject: Re: [RFC 01/10] submodule: add 'core.submodulesFile' to override the '.gitmodules' path Message-ID: In-Reply-To: <20180418134357.1e417fb22201b6a6b67c02c0@ao2.it> Hi Antonio, >> >> Good point! I wonder if the cleaner solution would be to just >> tell git to use HEAD:.gitmodules and not check out the file? >> then you would not need to come up with a namespace for names >> of the .gitmodules files and scatter them into the worktree as well? >> > > Any solution which: > > 1. prevents the gitmodules file to be checked out > 2. but still tracks it in the git repository > > OR > > 1. allows to set the gitmoudles file under some namespace > > would work for vcsh I guess. I personally would tend to rather go for supporting your first solution (prevent .gitmodules from checked-out, load from sparse HEAD), but I do not have strong arguments or feeling about this dimension. I am fine with a namespaced .gtimodules solution, too. Both solutions can be implemented by either: A) adding the code where it is (like your patch, e.g. using > - value=$(git config -f .gitmodules submodule."$name"."$option") > + gitmodules_file=$(git config core.submodulesfile) > + : ${gitmodules_file:=.gitmodules} > + value=$(git config -f "$gitmodules_file" submodule."$name"."$option") B) adding a helper, which is a layer of indirection to load the relevant configuration. And when it comes to this dimension, I'd strongly favor B over A. Having this indirection helper in place enables to add more options later easily as only one place needs to be touched. (These other options could include the other solution as presented above, or the idea with the special ref as mentioned in an earlier email) >> > Can you give an example from the user point of view of such a >> > "config-from-gitmodules" command? >> > >> >> git submodule config