Mercurial:将变更集推到回购a,而回购B也有变更集?

Mercurial:将变更集推到回购a,而回购B也有变更集?,mercurial,Mercurial,我在服务器上有一个名为“Gold”的repo,它作为我的生产repo存在,在服务器上有一个名为“Silver”的repo,它作为开发repo存在,然后在本地客户端上有一个或多个repo。奇怪的是,当我将一个变更集从我的本地开发机器推到Gold时,Silver也以某种方式获得了变更集。我们正在IIS7.5上的Windows Server 2008R2上运行Mercurial 例如: 服务器(在服务器上创建黄金) mkdir黄金 cd/黄金 汞离子 客户端(将黄金克隆到客户端) 克隆开发 光盘

我在服务器上有一个名为“Gold”的repo,它作为我的生产repo存在,在服务器上有一个名为“Silver”的repo,它作为开发repo存在,然后在本地客户端上有一个或多个repo。奇怪的是,当我将一个变更集从我的本地开发机器推到Gold时,Silver也以某种方式获得了变更集。我们正在IIS7.5上的Windows Server 2008R2上运行Mercurial

例如:

服务器(在服务器上创建黄金)

  • mkdir黄金
  • cd/黄金
  • 汞离子
客户端(将黄金克隆到客户端)

  • 克隆开发
  • 光盘开发
  • echo“Foo”>bar.txt
  • hg ci-Am“添加了文件bar.txt”
  • 汞推力
此时,客户端和服务器是同步的,每个都有一个变更集

服务器(将黄金克隆为白银-新的开发报告-在服务器上)

  • cd
  • hg克隆/金银
客户(提交并推动对黄金的更改-不接触白银)

  • echo“Fizz”>buzz.txt
  • hg ci-Am“添加了buzz.txt文件”
  • 汞推力

现在,我希望黄金有两套兑换套,白银有一套。在我们这里的环境中,黄金和白银在某种程度上都有两个变更集!我们对黄金的任何更改都会自动显示为白银。这似乎出乎我的意料-以前有人遇到过吗?

Hrm。这当然不应该发生。有很多方法可以让它发生(使用钩子),但它不应该单独发生

对于本地克隆(您的
hg clone./Gold-Silver
line),mercurial在封面下使用硬链接以节省磁盘空间,但在写入时会断开这些链接

但是,作为测试,您可以将该行更改为:

hg clone --pull ./Gold Silver
这将使用更多的磁盘空间,但在其他方面是相同的


我不希望这能解决任何问题,但我想这是一个很好的数据点。

新的更改集是显示在日志中,传入的还是工作副本中?它通过hg日志显示,但不显示在工作目录中(没有传入任何内容)。这看起来像是一个bug(似乎是一个相关问题)。也许你可以从mercurial邮件列表中得到帮助。谢谢你指出鲁迪。Ry4n在下面提供了一个我可以使用的解决方法,但我也会跟进邮件列表-希望根本原因也能得到解决。你的建议确实有效,这很好。我很想知道为什么有必要。。。