2012-01-03 49 views
7

我们的项目使用多个第三方开源库,其中一些需要自定义修改。通过克隆/推送/拉动传播远程位置

对于我们创建了自己本地的Git库中的每个库,添加原始源位置为厂商远程,从那里克隆,修改它根据需要和它推到一个内部远程存储库(姑且称之为起源 )。

这些存储库在我们的核心项目中用作子模块。

问题: 的“供应商” 远程网址不会传播到“原点”,并因此失去的人谁克隆内部库的储存库。

要合并为一个库中的新上行的每一次变化,你需要找到并手动远程重新添加厂商(或使用在创建之初完全相同的本地仓库,如果它仍然可用)。

是否有更好的方式来存储供应商存储库的URL,以便它可以传播和使用每个开发人员?向库中添加一个额外的文件(例如clone_from_here)似乎也不是很优雅。

回答

1

你可以通过.git/config。你已经成功地拉动或推动你的改变之后,看.git/config文件并记远程urlfetch

的仓库已被开发者(S)克隆完成后,打通开发者机器上.git/config和添加您复制的行。示例 -

[remote "vendor"] 
    url = [email protected]:xxxxx/xxxxxxx.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

在此示例中,您的开发人员现在可以推送或拉到供应商。

如果你需要编写提取网址更多的控制 - 有在gitguys这个优秀的文档 - http://goo.gl/JGaKD

+0

稍微比手动添加厂商更好,因为它恢复到什么取到哪个分支的信息。但它仍然需要在克隆后手动编辑你的git repo。 – rluba 2012-01-04 08:53:11

+0

唯一的另一种方法是在每个人的个人资料中创建一个别名,以便当他们运行命令时 - 例如'gitpsh'它将特别推送到指定的分支 – 2012-01-04 10:11:33

+0

由于似乎没有优雅的解决方案,我会接受您的回答。 – rluba 2012-01-08 14:12:06