我对mercurial很陌生,而且我对我们公司正在努力实现的解决方案也有问题。我在一个实验室工作,有一个严格的安全环境,生产汞服务器是在一个孤立的网络中。所有人都有两台电脑,一台在“现实世界”工作,另一台在与世隔绝和安全的环境中工作。
问题是,我们有其他实验室分布在世界各地,在某些情况下,我们需要合作两个或更多的实验室在一个项目。每个实验室都有一个HG服务器,用于在本地管理自己的项目,但我不确定我们同步公共项目的方法是否是最好的解决方案。为了解决这个问题,我们使用一个“包”将新闻变更集从一个实验室发送到另一个实验室。我的问题是这个方法有多好,因为这个解决方案有点复杂。程序或多或少是这样的:
有谁能启发我找到解决这个困境的最佳方法吗?有人有更好的解决方案吗?
非常感谢你的帮助。
发布于 2015-12-09 21:39:36
捆绑包是在没有直接连接的情况下传播更改的正确工具。但是,您可以通过在本地建模通信来简化构建包的过程:
您可以使用这种双重设置来模拟实验室之间的关系,就好像您有一个直接的连接一样,但是变更集通过包而不是推/拉来共享收益。
更具体地(同样从A实验室的角度):
hg outgoing path/to/repoB即可。现在您已经知道了在不需要请求和研究B实验室的日志的情况下应该捆绑什么。实际上,hg bundle bundlename.bzip repoB将为您绑定正确的变更集。就是这样。当实验室B将一个包发送回实验室A时,它将使用相同的过程,步骤1至5。一切都保持同步,就像存储库直接连接时一样。和往常一样,经常同步是值得的,以避免分歧太远,并遇到合并冲突。
事实上你有两个以上的实验室。保持它们同步的方法是相同的,就像您有一个直接连接:您想要一个中央服务器的“星型拓扑”吗?中央服务器是其他实验室直接与之通信的唯一节点吗?那么每个实验室只需要这台服务器的本地副本。在与大家分享一些工作之前,你是否需要大量的双边沟通?然后,为您想要交换的每个实验室保留一个本地模型。
发布于 2015-12-09 11:15:28
如果两个汞存储库之间没有直接的网络通信,那么您描述的方法似乎是同步这两个存储库的最简单方法。
在获得需要捆绑的新变更集时,您可能会在流程样板上节省一点,具体取决于什么。
这一次,您不需要为了创建包而更新您的工作副本;只需要回购就足够了,您不需要一个工作副本。
如果您知道上一次同步的日期和时间,您可以使用适当的修改(例如,自今年3月30日以来的所有修订)将自那时以来添加的所有变更集捆绑在一起:hg log -r'date(">2015-03-30")',因此您可以跳过冗长的手动评审过程。
如果您的存储库不太大(因此适合您用于交换的媒体),只需将其完整复制到那里,并从该交换磁盘中进行本地提取以同步,也跳过这些评审过程。
当然,你也无法避免合并--当几个人同时在同一件事情上工作,并且都致力于他们自己的回报时,他们是你必须付出的代价。
https://stackoverflow.com/questions/34176470
复制相似问题