Git子模块和Repo有什么优缺点?

25

恰好我们在三个不同的移动平台之间共享一个库。公司内部就如何管理这个库的工具存在很多争议。据我所知,Repo(Android)是一种基于Git构建的工具,用于管理数百个Git存储库,而Git子模块已经是Git的一部分。

理想情况下,我们希望将此库放在单独的存储库中,并能够轻松地将其集成到不同的移动应用程序中。

使用Git子模块或Repo作为管理在各种平台之间共享的库的方法的优缺点是什么?


嗯...随你喜欢?Git子模块很简单,不需要额外的工具。如果你有外部用户,只需提供“可分发”的软件包(tarball?),让用户决定如何管理依赖关系。 - sehe
1
非常好的概述什么是子模块:http://speirs.org/blog/2009/5/11/understanding-git-submodules.html - reto
你所说的“library”,是指“库的源代码”,还是指库本身的二进制文件以供共享?Git子模块可以管理源代码,但最好将二进制文件存储在Git仓库之外的其他地方。 - VonC
抱歉,我应该提到的是库的源代码。 - binarycreations
2个回答

7

Git子模块是为此而建立的。我们一直在使用子模块来引用库等。progit.org/book对子模块有一个很好的章节,并展示了从一版本升级到另一版本的一个例子。


1
这是亚当提到的章节链接:http://git-scm.com/book/en/v2/Git-Tools-Submodules - Rhubbarb

2
主要区别在于 Git子模块 进行跟踪,而Repo则不会。结果就是只有通过 git 才能检出旧版本的确切提交。
第二个最重要的区别是 Git 更受欢迎,而 Repo 则不然。结果是 Git 的解决方案更快。
也许 Repo 存在的唯一原因就是在 Repo 创建时 Git 子模块还不存在。

1
主要区别在于Git子模块进行跟踪,而Repo不进行跟踪。Repo允许创建和维护快照清单,使其比子模块解决方案更灵活。此外,可以为不同的项目配置/ECU或测试阶段创建多个清单。我不确定使用子模块是否容易实现。如果我错了,请纠正我。 - vladisld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接