On 20 Oct 2015, at 00:07, Stefan Beller <sbel...@google.com> wrote: > On Mon, Oct 19, 2015 at 12:28 PM, Lars Schneider > <larsxschnei...@gmail.com> wrote: >> Hi, >> >> I have a closed source Git repo which references an Open Source Git repo as >> Submodule. The Open Source Git repo references yet another Open Source repo >> as submodule. In order to avoid failing builds due to external services I >> mirrored the Open Source repos in my company network. That works great with >> the first level of Submodules. Unfortunately it does not work with the >> second level because the first level still references the "outside of >> company" repos. I know I can rewrite Git URLs with the git config >> "url.<base>.insteadOf" option. However, git configs are client specific. > > I feel like this is working as intended. You only want to improve your > one client (say the buildbot) to not goto the open source site, while > the developer may do want to fetch from external sources ("Hey shiny > new code!";) Well, that's a good argument. However, our developers have usually no write access to these repos. If they want to push a commit then they need to fork the open source repo and change the submodule URL in the parent repo. I fear that this kind of process might overwhelm them and/or troubles them (changing Git submodules URLs has a few pitfalls). As a result they might be less inclined to make a contribution or - even worse - they copy the code in the parent repo, don't use Submodules and make no contribution at all.
> >> I would prefer a solution that works without setup on any client. I also >> know that I could update the .gitmodules file in the Open Source repo on the >> first level. I also would prefer not to do this as I want to use the very >> same hashes as defined by the "upstream" Open Source repos. > > You could carry a patch on top of the tip of the first submodule > re-pointing the nested submodule. This requires good workflows > available to deal with submodules though. (Fetch and merge or rebase, > git submodule update should be able to do that?) True. However, we have many Git beginners and I fear that this workflow would overwhelm them. >> >> Is there yet another way in Git to change URLs of Submodules in the way I >> want it? >> >> If not, what do you think about a patch that adds a "url" section similar to >> the one in git config to a .gitmodules file? >> > > So we have different kinds of git configs. within one repository, in > the home director (global to the one machine), > maybe you would want to have one "global" config on a network share, > such that every box in your company > reads that "company-wide" global config and acts upon that? That could actually work. The only downside I see is that the devs need to intentionally update their "company" git config. We have +4000 engineers and therefore I want to establish processes that are as easy and fault-tolerant as possible. > >> Example: >> ---------- >> [submodule "git"] >> path = git >> url=git://github.com/larsxschneider/git.git >> >> [url "mycompany.com"] >> insteadOf = outside.com > > Wouldn't that be better put into say a global git config instead of > repeating it for every submodule? See answer above. The git config setup could be an obstacle. > > In case of the nested submodule you would need to carry the last lines > as an extra patch anyway > if this was done in the .gitmodules files? Or do you expect this to be > applied recursively (i.e. nested > submodules all the way down also substitute outside.com) Yes, my intention was to apply these recursively. > Am I missing your point? I don't think so :-) Thanks, Lars-- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html