Mercurial:推动变革集到Repo A,不知怎的Repo B也有它?

时间:2010-08-10 20:38:18

标签: mercurial

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

示例:

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

  • mkdir Gold
  • cd ./Gold
  • hg init

客户(克隆黄金到客户端)

  • hg clone http://server/Gold Dev
  • cd Dev
  • echo“Foo”>跳回到bar.txt
  • hg ci -Am“添加文件bar.txt”
  • hg push

此时客户端和服务器是同步的,每个都有一个变更集。

服务器(将Gold克隆为Silver - 一个新的dev repo - 在服务器上)

  • cd ..
  • hg clone ./Gold Silver

客户(提交并推送更改为Gold - 不接触Silver)

  • echo“Fizz”> buzz.txt
  • hg ci -Am“添加文件buzz.txt”
  • hg push

现在我希望Gold有两个变更集,Silver可以有一个。在我们这里的环境中, Gold&银都不知何故都有变化集!我们推送到Gold的任何更改都会自动显示为Silver。这对我来说似乎令人难以置信 - 有没有人遇到过这个?

1 个答案:

答案 0 :(得分:1)

槽糕。这当然不应该发生。有一些方法可以实现它(使用钩子),但它不应该自己发生。

对于本地克隆(您的hg clone ./Gold Silver行),mercurial使用硬件链接来节省磁盘空间,但它会在写入时断开这些链接。

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

hg clone --pull ./Gold Silver

将使用更多磁盘空间,但在其他方面相同。

我不希望有任何修复,但我想这是一个很好的数据点。