Git子树或GitSlave作为Git子模块的替代品?

我觉得使用Git子模块对于我的开发stream程来说是麻烦的。 我发现Git子树和gitslave可能是更好的解决scheme。 我找不到有关这两个选项的任何比较信息。

问题

哪个更好?为什么?

这两个有一个Windows版本的工作?

哪个最适合你,取决于你的需求,期望和工作stream程。 他们在某种程度上是半同构的,只是有些比其他人更容易使用。

  • gitslave在子项目控制和开发的时候与超级项目不太一样的时候很有用,而且当你通常想要同时标记,分支,推,拉等所有的仓库时。 gitslave从来没有在我知道的窗户上testing过。 它需要perl。

  • 如果不控制子项目,或者更确切地说希望在子项目更改时修复子项目,那么git-submodule会更好。 git-submodule是git的一个标准部分,因此可以在windows上工作。

  • git-subtree为git的内置子树合并策略提供了一个前端。 当你更喜欢拥有一个单一的仓库“统一的”git历史。 与子树合并策略不同,将更改导出到不同的(目录)树更容易返回到原始项目,但它不像gitslave甚至git-submodule那样自动。

  • 回购在理论上类似于gitslave,但没有为我已经发现的非android操作logging。 它相当专注于Google Android开发模型,并且只支持一些git命令(尽pipe你可以运行任意命令),而有限的本机支持不支持,例如,集中的存储库来推送和检出分支似乎相当困难。

  • 如果你有多个版本控制系统的话,kitenet的mr就是你想要使用的,但是由于其最低公分母方法,它大多只限于git-only超级项目。 有办法可以运行任意的命令,但是它们并没有很好的集成。

我目前使用子模块进行开发,而不仅仅是关联第三方库。 有一些方法可以使子模块更容易生活,特别是当它们是合并或重组冲突的来源时。 查看ls-tree来获取涉及子模块冲突的2个提交。 这可能是人们处理子模块中最困难的部分。 现在脚本编写将使这更容易处理。 未来版本的Git应该有更好的本地支持来处理它们。

希望这可以帮助。

Interesting Posts