自己找到了构建工程师和系统人员的角色,我必须学习最终弄清楚一些事情——即如何设置我们的基础设施。在我上船之前,他们没有。考虑到这一点,如果我问任何应该很明显的问题,请原谅我。
我们目前有 3 级分布式 mercurial 存储库:每台开发人员机器上的第一级,中央(主干)服务器上的第二级 - 只能从本地网络访问,第三层在 BitBucket 上。工作流程如下:
本地开发:开发人员从本地网络服务器中提取变更集。解决合并冲突后,开发人员提交到本地并推送到我们的本地服务器。一个预定的脚本在一夜之间将所有内容备份到 BitBucket。
在家工作:开发人员从 BitBucket 中提取变更集。开发人员提交到他们的本地 repo 并推送到 BitBucket。
TeamCity 为每个项目从本地网络服务器获取 repo 更改,并运行构建/自动部署到测试环境。
我遇到的问题是场景 2:目前,如果有人将某些东西推送到 bitbucket,那么他们有责任在他们回到办公室时将其合并回来。如果它可以自动化,那就有点浪费时间了。
如果您想知道,我们在本地网络上有一个中央存储库的原因是因为运行 BitBucket 存储库的 TeamCity 构建会很慢。没有测试,所以这只是一个有根据的猜测。
无论如何,计划并从本地网络上的中央存储库推送所有更改的脚本只是为每个存储库运行“hg push”。它必须事先进行拉/合并。我该怎么做?
这是 pull 必须使用开关的: - pull 后更新 - 如果发生合并冲突,总是采用更新的文件 - 如果出现错误,向系统管理员发送电子邮件 - 有什么额外的吗?
请随时分享您自己的设置,只要它与所描述的没有太大不同。
更新:根据最近的答案,如果需要澄清预期的方法,我觉得一个重要方面。这个想法不是在我们的本地网络中央存储库上强制合并。相反,它应该解决合并冲突,就像在开发人员机器上使用 HgWorkbench 一样使用 post pull:更新 + 合并。默认情况下,所有开发人员都启用此功能,因此应该没问题。
因此服务器上的脚本/批处理文件将执行以下操作:
- 从 BitBucket 拉取
- 更新+自动合并
任何合并自动冲突?
3.1 是 -> 发邮件给管理员手动合并 -> 中断
3.2 否 -> 继续
获取传出变更集。push会创建多个head吗?(由于拉/更新,这可能是多余的)
4.1 是 -> 提示管理员。休息。
4.2 否 -> 推送更改
希望这能澄清一点。现在,这可以单独使用 hg 命令来完成 - 批处理 - 还是我必须编写脚本?具体可以发邮件吗?
谢谢。