我们的小软件商店最近从Subversion迁移到Git,因为我们的程序员更好地发现了Git。迁移并非轻松,我们遇到子模块功能问题。我的主要抱怨是,一旦repo包含子模块,你就不能简单地克隆它并期望事情能够发挥作用。您必须执行额外的步骤来初始化和下载子模块。随后的拉动应update the submodules automatically,这样就行了。但是当我添加一个新的子模块时,推送提交和人们拉动,他们不会自动获得新的子模块,他们必须再次手动git submodule update
。
这是愚蠢的,因为人们不能简单地用子模块拉回购物并期望它的构建。这种理解是否正确?程序员可以在接收新提交后简单地编写脚本或别名来更新子模块,但是对于我们的非程序员子模块来说很痛苦。我想提出一个解决方案,无论使用何种Git客户端,克隆/拉动后repo都能正常工作。
我有什么选择?
答案 0 :(得分:0)
如果您计划使用大量子模块,我强烈推荐git-slave
,特别是如果您要引用“公共库”。虽然如果集中精力在几个小时内通过一些实验来完成一系列场景,那么裸机子模块并不难以加速。
我还强烈推荐一些CI服务器为您制作版本。它将获取所有必要的子模块。您可以通过可下载的zip文件制作所有工件(您可以决定所需的工件)。我使用TeamCity,这是一种很好的方式来公开所有内容而无需使用任何VCS。
答案 1 :(得分:-1)
现在子模块支持更好,使问题几乎不存在。
GitBox获得了良好的子模块支持。
SourceTree by Atlassian是一个免费的Git客户端,在1.3中添加了子模块支持。在1.3.1中的子模块处理中有a small glitch,但是客户端似乎覆盖了我想要的所有子模块用例 - 也就是说,它使子模块对于非程序员来说几乎是透明的。