gpt4 book ai didi

Mercurial 分布式存储库

转载 作者:行者123 更新时间:2023-12-02 09:13:37 27 4
gpt4 key购买 nike

当我自己担任构建工程师和系统人员的角色时,我必须学习并弄清楚一些事情 - 即如何设置我们的基础设施。在我上船之前,他们没有任何东西。考虑到这一点,如果我问任何应该显而易见的问题,请原谅。

我们目前有 3 级分布式 Mercurial 存储库:第一级位于每台开发人员计算机上,第二级位于中央(主干)服务器上 - 只能从本地网络访问,第三层位于 BitBucket 上。工作流程如下:

  1. 本地开发:开发人员从本地网络服务器提取变更集。一旦 merge 冲突解决,开发人员就会提交到本地并推送到我们的本地服务器。预定的脚本连夜将所有内容备份到 BitBucket。

  2. 在家工作:开发人员从 BitBucket 中提取变更集。开发者提交本地存储库并推送到 BitBucket。

  3. TeamCity 从本地网络服务器获取每个项目的存储库更改,并运行构建/自动部署到测试环境。

我遇到的问题是场景 2:目前,如果有人将某些内容推送到 bitbucket,那么他们有责任在回到办公室后将其 merge 回来。如果可以自动化,那就有点浪费时间了。

如果您想知道,我们在本地网络上拥有中央存储库的原因是因为运行 BitBucket 存储库的 TeamCity 版本会很慢。尚未测试,因此这只是一个有根据的猜测。

无论如何,计划并从本地网络上的中央存储库推送所有更改的脚本只是为每个存储库运行“hg Push”。它必须事先进行拉取/merge 。我该如何正确地做到这一点?

这就是拉动必须使用开关的目的:- 拉取后更新- 如果发生 merge 冲突,请始终采用较新的文件- 如果出现错误,请发送电子邮件给系统管理员- 还有什么额外的吗?

请随意分享您自己的设置,只要它与描述的内容没有太大不同即可。

更新:根据最近的答案,如果需要澄清预期的方法,我认为这是一个重要的方面。我们的想法不是强制 merge 我们的本地网络中央存储库。相反,它应该像在开发人员机器上使用 HgWorkbench 一样通过 post pull 解决 merge 冲突:更新 + merge 。所有开发者都默认启用此功能,因此应该没问题。

因此服务器上的脚本/批处理文件将执行以下操作:

  1. 从 BitBucket 中提取
  2. 更新+自动 merge
  3. 有 merge 自动冲突吗?

    3.1 是 -> 发送电子邮件给管理员手动 merge -> 中断

    3.2 否 -> 继续

  4. 获取传出变更集。推送会产生多个头吗? (由于拉取/更新,这可能是多余的)

    4.1 是 -> 提示管理员。休息。

    4.2 否 -> 推送更改

希望这能让事情变得更清楚。现在,可以单独使用 hg 命令来完成此操作 - 批处理 - 还是我必须编写脚本?具体可以发邮件吗?

谢谢。

最佳答案

所以您的所有工作都可以在 BitBucket 上找到,对吧?为什么不将 BitBucket(可从任何地方使用)作为主要存储库源并放弃本地服务器?您可以使用 TeamCity 从 BitBucket 中提取更改以进行夜间构建,并且开发人员始终使用 BitBucket 上的当前存储库并自行解决所有 merge 问题,这样您就不会再进行任何后续 merge 。

关于Mercurial 分布式存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com