我注意到BitBucket Server(以前称为Stash)有一个名为"fork syncing"的功能,它允许在两个不同的存储库之间自动同步.我看待它的方式就像一个镜像存储库.
该功能的用处是什么?
为什么有人会使用它以及如何使用?
要了解如何使用fork同步,首先要考虑工作流程.
如果您的组织使用的工作流程中开发人员具有对规范存储库的写入权限,则可能根本不需要fork.在这样的组织中,fork同步可能不会带来很多好处,因为你的fork,如果你有一个,可能只存在你保持你的副项目的地方,你还没准备好推到规范的分支存储库并与您的团队共享.
但是,如果您的组织将对规范存储库的写访问权限限制为一组受信任的副官,并且所有开发人员都需要在存储库的分支中执行他们的工作并打开带有更改的pull请求,那就是fork的环境类型同步可以得到回报.
在这样的环境中,正常的开发工作流程是三角形的:
从上游存储库获取
检查所需的基本分支以进行更改并对其进行编码
将你的工作推到你的分支中的一个分支
此工作流程要求您积极参与两个远程存储库以进行任何非平凡的更改.fork同步的目标是消除这种三角形工作流,并允许您针对fork进行开发,就像您可以访问规范存储库本身一样.所以这里是启用了fork同步的工作流程:
从你的叉子中取出
检查所需的基本分支以进行更改并对其进行编码
将你的工作推到你的分支中的一个分支
请注意,您永远不需要直接与上游交互,因为当新工作被推送到规范存储库时,fork中的分支会自动保持同步.现在,工作流程与您直接在规范存储库中工作时的工作流程相同.
有些人可能想要自己提取来更新他们的fork.那也没关系; fork syncing是一个可选功能,因此您可以将其关闭.但对我来说,它是我工作流程中不可或缺的一部分.
完全披露:我是Bitbucket Server的主要开发人员,也是其fork同步功能的作者.我使用fork中的分支在Bitbucket Server上进行所有开发,并通过fork同步保持最新.