我的团队分布在澳大利亚和菲律宾之间。直到最近,我们一直使用一个SVN服务器来维护我们的代码,服务器包含几个存储库(让我们称它们为Client、API和shared ),客户端和API之间通过SVN外部共享公共代码。我们使用TeamCity进行CI,八达通部署用于自动部署;特性发布通常每2-3个月完成一次,需要时进行维护发布。
我们现在转向BitBucket作为我们的VCS,并且在总体工作流程上有一些问题。首先,对于外部审计问题,我们需要阻止所有开发人员提交主存储库,因此我们对客户端开发、api开发和公共开发存储库进行了分叉,并且只授予团队领导对主存储库的编写权限,而每个人都对-development存储库编写权限。到现在为止还好。
我们面临的主要问题是共享公共存储库中的代码。当开发人员开始开发一个新特性时,他们需要在三个存储库中的每个库上创建分支,然后使用新创建的分支创建一个关于客户端开发和api开发的子树,该子树链接到公共开发。但是,当他们将代码向后推回,然后有人尝试使用该代码时,子树就消失了,现在只是源代码中的一个常规文件夹。
我认为我们的整体最佳工作流策略将是gitflow的一个变体,其中-master是“原始”副本,只有团队领导才能通过接受拉请求来修改该副本,而gitflow的所有其他特性都在-development分支上实现。然而,子树的问题确实使我们放慢了脚步。
如何有效地使用子树在存储库之间共享代码,而不必每次合并代码时都要删除和重新创建它们?
发布于 2017-04-24 19:49:53
我建议使用子模块而不是普通的子树是服务器和客户端的组件。有了子模块,父存储库的每个分支(在您的案例中是客户机/服务器)可以指向子存储库的提交(在您的例子中是公共的)。
有关详细信息,请参阅Git子模块文档
https://softwareengineering.stackexchange.com/questions/347453
复制相似问题