在我身为建筑工程师和系统人员的角色中,我必须学习最终弄清楚一些事情 - 即如何设置我们的基础架构。在我加入他们之前,他们没有任何。考虑到这一点,如果我问任何本该显而易见的问题,请原谅我。Mercurial分布式存储库
目前,我们有3个层次的分布式善变库:在每个开发人员的机器,在中央(主干)两级的一个级别的服务器 - 只有从本地网络访问和到位桶的第三层。工作流程如下:
本地开发:开发人员从本地网络服务器提取变更集。一旦合并冲突得到解决,开发人员将提交到本地并推送到我们的本地服务器。一个安排好的脚本在一夜之间支持BitBucket。
在家工作:开发商从到位桶拉更改集。开发人员向他们的本地回购协议致敬并推送到BitBucket。
的TeamCity拿起从本地网络服务器为每个项目回购的变化和运行构建/自动部署到测试环境。
问题我打的场景2:此刻,如果有人推的东西到位桶它是把它合并回当他们回到办公室时他们的责任。如果可以实现自动化,这有点浪费时间。
如果你想知道,我们有本地网络上的中央回购的原因是因为这将是运行的TeamCity建立到位桶仓库的缓慢。没有测试过,所以这只是一个受过教育的猜测。
总之,该计划并推动从中央存储库本地网络上的所有更改的脚本只是运行“汞推”每个库。它必须事先进行拉/合并。我该如何做到这一点?
这是拉将不得不使用的开关: - 更新拉 之后 - 在合并冲突的情况下,始终以较新的文件 - 在错误的情况下,请发送电子邮件至系统管理员(或多个) - 什么额外的?
请随意分享您自己的设置,只要它与所描述的没有太大的不同。
更新:在最近的答案的光,我觉得一个重要的方面,如果预期的方法需要加以澄清。这个想法不是强制合并在我们的本地网络中央回购。相反,它应该解决合并冲突的问题,就像在开发者机器上使用HgWorkbench进行post pull:update + merge一样。所有的开发者默认都有这个,所以应该没问题。从到位桶
- 拉
- 更新+自动合并
任何合并自动冲突:
因此,对服务器的脚本/批处理文件将执行以下操作?
3.1是 - >发送电子邮件给管理员手工合并 - >打破
3。2否 - > Cary
获取传出变更集。将推动创造多个头? (由于拉/更新,这可能是多余的)
4.1是 - >提示管理员。打破。
4.2否 - >更改推
希望这清除了一点东西。现在,可以单独使用hg命令 - 批处理 - 还是必须编写脚本?具体可以发送电子邮件吗?
谢谢。
改变TeamCity从BitBucket运行应该是微不足道的。既然你只是猜测它会变慢,我想你应该尝试一下,然后再尝试解决这个问题。奇怪的是,基本上有两个同层的副本(BitBucket和本地中央服务器) –
不可否认,拥有两层可能会很奇怪。但这是分发给我的手段。它应该能够处理任意数量的图层。无论如何,我会尝试直接连接到BitBucket,看看它是如何发展的。这并不像您想象的那样微不足道,因为您必须开始玩优化 - 减少为每个构建下载的源代码量(而不是清理某些文件夹),甚至可能重构某些解决方案以满足此需求。黄金法则:每个计划需要三倍的时间执行按计划:) –