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

Reply via email to