On Mon, Jun 14, 2021 at 02:09:15PM +0900, Junio C Hamano wrote: > > Emily Shaffer <emilyshaffer@xxxxxxxxxx> writes: > > > Teach submodules a reference to their superproject's gitdir. This allows > > us to A) know that we're running from a submodule, and B) have a > > shortcut to the superproject's vitals, for example, configs. > > > > By using a relative path instead of an absolute path, we can move the > > superproject directory around on the filesystem without breaking the > > submodule's cache. > > As the function this new thing is added assumes the modern layout of > having submodule "repository" in .git/modules/* of the repository of > the superproject, it is rather easy to move the whole thing together, > so recording it as relative path is all the more important. > > Can a submodule repository be bound to two or more superproject at > the same time? "We assume no, and we will forbid such a layout, and > that is why we can afford to make submodules aware of their > superprojects" is a totally acceptable answer, but it would make it > easier to follow the reasoning behind a design change like this > series does if such an assumption is recorded somewhere. Thanks for pointing out the use case - I can see this happening in some case like adding a source code dependency from a few projects at once, so it doesn't sound too far-fetched. But no, I don't think this method of caching can support it; I think forbidding it and saying "if you want this to work, use a worktree" is pretty reasonable. Will find a nice place to write it down. - Emily