找回密码
 立即注册
首页 业界区 业界 【译】 我们如何同步 .NET 的虚拟单体仓库(二) ...

【译】 我们如何同步 .NET 的虚拟单体仓库(二)

仲水悦 2 小时前
原文 | Přemek Vysoký
翻译 | 郑子铭
术语

让我们来看看本节剩余部分将用到的一些术语:

  • 源代码/产品存储库– 当前开发存储库之一,例如dotnet/runtime。不是 VMR。
  • 前向流程——将变更从产品存储库移动到虚拟存储库的过程。
  • 回流– 将变更从 VMR 移动到产品存储库的过程。
  • 代码流——指在虚拟存储库 (VMR) 和产品存储库之间传递变更的过程。这是一个通用术语,既可以指正向流,也可以指反向流。
  • 代码流 PR – 指在代码流流程中发起的包含代码变更的拉取请求。它可以是正向流 PR,也可以是反向流 PR。
双向代码流 v1

代码流算法的第一版设计目标是,每次需要提交变更时,都必须能够在目标仓库中创建一个拉取请求。该拉取请求必须包含所需的变更,但可能与目标分支冲突。我们将展示后来我们如何意识到这是一个错误的指导原则,因为它引入了一些有趣的问题。
简而言之,该算法的工作原理是:我们使用上述跟踪元数据来追踪双方之间的最后数据流。然后,我们找到目标仓库中创建 PR 分支的正确位置(提交),将更改物化到该分支之上,并创建一个拉取请求。我们必须向您保证,如果双方之间存在冲突的更改,这些冲突也会出现在 PR 中。这意味着 PR 分支必须基于足够旧的提交,以便将源分支的提交和目标分支中的更改都引入到冲突状态。
代码流算法的第一个版本用于发布大部分 .NET 10 预览版以及 10.0 正式版。该算法会考虑前一个代码流的方向,并据此应用不同的策略。从技术上讲,有四种情况需要考虑(正向-正向、正向-反向、反向-正向、反向-反向),但后两种情况是对称的,因此我们不再单独讨论。
相反方向的流动

让我们先来看一个比前两种情况更复杂的场景——当有两个方向相反的流体流动时。本节中的图表使用以下符号:
<ul>
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册