Git:组合多个存储库

时间:2012-03-15 10:02:58

标签: git master-slave git-slave

我们为基本设置创建了一个存储库,我们可以将其用于新项目。这个基本设置是“正在进行中”,因此正在进行此项开发。当有新项目时,我们想要进行基本设置并使用它。新项目是基本设置中的模块。

由于正在开发基本设置,我们希望将更新推送到其他存储库。我们怎样才能用Git做到这一点?

我在Gitslave上读到了一些东西。这个好吗? http://gitslave.sourceforge.net/

2 个答案:

答案 0 :(得分:2)

如果要在多个存储库上运行相同的命令,则使用Gitslave。在这种情况下唯一的适用性是,如果您创建了一个超级项目(可能是基本的回购,可能是另一个回购)并且所有项目回购都是子项。然后,您可以在一个命令中,在指向基本仓库的所有从属仓库中添加一个远程,检查所有从属仓库中的基本分支,然后将更改拉入每个从仓库,最后合并/变基本 - 分支到项目分支(主人或其他)。一旦解决了任何冲突,您就可以然后推送每个项目仓库。

这是将更改推送到其他存储库的反过来,但可能更有用,因为您可以自动化合并过程。

注意另一种更符合您原始愿望的方法是为推送添加“all”目标,这会将基本分支推送到同一命令中的多个repos。 http://jeetworks.org/node/22

但请注意,在所有情况下,您必须拥有“基本分支”概念才能拥有明智的分支策略。具体来说,项目分支必须从基本分支分支,以便可以合并或重新定义基本分支的更新。

还有一个选择是让一个仓库统治它们,并为每个项目创建一个分支。然后,您需要编写一些自动化来将您的更改合并到基本分支到所有其他适当的分支。根据您的需求,安全性,或项目相互之间的偏差,或者项目特定的程度,这可能是有意义的,也可能没有用。

答案 1 :(得分:1)

我不认为子模块或奴隶在这里是合适的:
您不希望子目录包含另一个仓库的内容,您希望将仓库的(更新的)内容与基本项目结构合并。

如果每个项目repos将“basic”repo添加为远程(git remote add basic /path/to/basic/repo),并将basic repo拉入本地分支(以实例命名),则会更容易basic-br'),然后在当前分支中合并所述分支。

这样,他们可以定期获取或提取basic个回购,并在需要时合并basic-br分支。