2015-12-11 34 views
3

我注意到BitBucket Server以前的Stash具有一个名为“叉同步”的功能,它允许在两个不同的存储库之间自动同步。我看到它的方式就像一个镜像库。为什么fork同步很有用?

该功能的用处是什么?

为什么要有人使用它,以及如何?

+0

其中一个存储库是只读的吗? – Flosculus

+0

两者都不可写。 – ipinak

回答

7

要理解如何使用叉同步,首先要考虑工作流。

如果您的组织使用开发人员对规范存储库具有写入权限的工作流程,则根本不需要任何分支。在这样的组织中,叉式同步可能不会带来很多好处,因为如果有叉式叉,可能只存在一个地方,您可以保留您的侧边项目,但您尚未准备好将其推送到规范中的分支存储库并与您的团队共享。但是,如果您的组织限制对规范存储库的写入访问权限给一组可信的中尉,并且所有开发人员都需要在存储库的分支中执行他们的工作,并使用他们的更改打开请求,那就是类型叉同步可以得到回报的环境。

在这样的环境中,正常发展的工作流程是三角形:

  • 从上游储存库
  • 结帐的所需碱分支为更改抓取并将它们编码了
  • 推工作地点到一个分叉在你的叉子

这个工作流程需要你积极地参与两个远程存储库因为任何不平凡的变化。叉式同步的目标是消除这种三角形工作流程,并且允许您按照与您的规范存储库本身开发的方式完全相同的方式进行开发,如果您有权访问。因此,这里的叉同步工作流程启用:

  • 从你的叉子
  • 结帐所需的基本分行更改获取并编写了
  • 把你的工作提高到一个分支在叉

请注意,您从不需要直接与上游进行交互,因为新工作被推送到规范存储库时,叉中的分支会自动保持同步。现在,工作流程与您直接在规范存储库中工作的情况相同。

有些人可能想要自己提取更新他们的叉子。这也没关系;叉同步是一个可选功能,所以你可以关闭它。但对我而言,这是我工作流程的一个组成部分。

完全公开:我是Bitbucket Server的主要开发人员,也是其叉同步功能的作者。我使用我的fork中的分支来完成我在Bitbucket Server上的所有开发,该分支通过分叉同步保持最新。

1

根据Atlassian的文档:Keeping forks synchronized

叉同步有助于您在上游资源库的变化让你的叉子到位桶服务器上的更新。 Bitbucket服务器可以自动为叉中没有修改的所有分支和标签执行此操作。

如果您在分支中修改了分支或标签,Bitbucket服务器将提供同步策略。如果这意味着您的更改将会丢失,Bitbucket Server将永远不会更新您的分支或标签。

请注意,同步是关于将最近的上游更改拉入您的分叉,而拉请求则是关于将您的更改推回上游存储库

Github BootCamp你会发现fork

一个这个定义是一个存储库的副本。分拣存储库允许您在不影响原始项目的情况下自由尝试更改。

如果叉只是使用原来的回购进行实验,没有任何原因,不是一个副本:Github Help

同步您的叉子只更新你的本地仓库的副本。

+0

因此,使用自动同步分叉只是存储库的一面镜子,对吧?我已阅读链接的内容,但在我的脑海中,这就是它的一面镜子。 – ipinak

+1

是的,它是一种镜像存储库以保持最新状态 – piotrek1543

相关问题