我们为可用于新项目的基本设置创建了一个存储库。这个基本设置是“进行中的”,所以这方面的开发正在进行中。当有一个新项目时,我们希望进行基本设置并使用它。新项目是基本设置中的模块。
由于正在开发基本设置,我们希望将更新推送到其他存储库。我们如何用 Git 做到这一点?
我在 Gitslave 上读过一些东西。这个好吗? http://gitslave.sourceforge.net/
我们为可用于新项目的基本设置创建了一个存储库。这个基本设置是“进行中的”,所以这方面的开发正在进行中。当有一个新项目时,我们希望进行基本设置并使用它。新项目是基本设置中的模块。
由于正在开发基本设置,我们希望将更新推送到其他存储库。我们如何用 Git 做到这一点?
我在 Gitslave 上读过一些东西。这个好吗? http://gitslave.sourceforge.net/
当您想在多个 repos 上运行相同的命令时,使用 Gitslave。在这种情况下,唯一适用的情况是,如果您创建了一个超级项目(可能来自基本存储库,也可能是另一个存储库)并将所有项目存储库作为子项目。然后,您可以在一个命令中,在指向基本存储库的所有从属存储库中添加一个远程,检查所有从属存储库中的基本分支,然后将更改拉入每个从属存储库,最后合并/重新设置基本-branch 到项目分支(主或其他)。一旦你解决了任何冲突,你就可以将每个项目 repo 推出。
这与将更改推送到其他存储库相反,但可能更有用,因为您随后也可以自动化合并过程。
请注意,另一种更符合您最初期望的方法是添加“全部”目标进行推送,这会将基本分支推送到同一命令中的多个存储库。 http://jeeworks.org/node/22
但是,请注意,在任何情况下,您都必须有一个“基本分支”的概念,才能有一个健全的分支策略。具体来说,项目分支必须从 basic-branch 分支,以便对 basic-branch 的更新可以合并或重新定位。
还有一种选择是让一个 repo 来统治它们,并为每个项目创建一个分支。然后,您需要编写一些自动化程序来将您对 basic-branch 的更改合并到所有其他适当的分支中。根据您的需求、安全性或项目之间的偏离程度,或者项目特定的杂乱无章,这可能有意义,也可能没有意义。
我不认为子模块或从属在这里是合适的:
你不想要一个包含另一个 repo 内容的子目录,你想将 repo 的(更新的)内容与基本项目结构合并。
如果每个项目存储库都将该“ basic
”存储库添加为远程(git remote add basic /path/to/basic/repo
),并将该basic
存储库拉到本地分支(例如名为“basic-br”)中,然后将所述分支合并到其当前分支中,则会更容易。
这样,他们可以定期获取或提取basic
repo,并在需要时合并basic-br
分支。