mercurial repository corruption

问题描述:

我是新来的mercurial,现在约2个月。我们在一个新项目中使用它,并试图创建一个新的回购,即主干的一个副本,用作发布“分支”。mercurial repository corruption

我们使用*回购,每个人都使用hgwebdir.cgi通过https向/从/推送/推送。在服务器hg 1.5.4和“客户端”上使用各种版本,1.5.2 - > 1.6.3 一切都好。该克隆是好的(克隆后的hg验证),唯一的问题是很快这个repo被损坏(空或缺少;在清单未找到)。

主要的回购是好的,只有这个版本很快就会破产。 回购的名称(文件夹名称和发布的名称,都位于相同的根文件夹):
AB - 为主干
ABRelease - 为发布回购
(读取的文档的东西,听起来像这可能是一个问题 - 请参阅

另一个非常奇怪的事情是checkins只对trunk(AB)在release分支上被看作可用,并且它们在验证时显示为错误(在找不到的manifest中) 。不明白这是怎么回事

任何线索?

+0

你在Windows上吗?那么它可能是一个副本http://*.com/questions/3453216/mercurial-pushing-a-changeset-to-repo-a-and-somehow-repo-b-has-it-too – Rudi 2010-09-16 11:58:50

+0

是的,它是...... – florin 2010-09-17 14:22:20

这不是一个答案,但我会说,你在做什么是绝对应该工作。确保有线协议具有完全向后兼容性对于Mercurial人员非常重要。

您的两个回购之间的“相声”非常关注,除非有人使用the share extension,否则不应该发生。

如果您尝试使用clone --pull创建A.B.Release克隆而不是克隆本身,该怎么办?

+0

是--pull解决了这个问题,因为正常的pull使用硬链接来创建新的回购,并且从我的角度来看,这显然是错误的。默认不应该这样做,因为不会创建一个新的回购,只是为了在两个地方拥有相同的数据,他们真的想独立回购。 – florin 2010-09-17 14:19:59

+0

硬链接是要走的路,软链接只能用来愚弄人类认为一个文件真的在另一个目录中,因为他们习惯了目录布局。在内部,当使用硬链接时,Linux知道文件正在被复制,因此只使用一种名为'copy on write bit'的技术保留一个副本,这意味着只要其中一个副本发生变化,文件就会被复制。所以你通过使用softliks +你让hg变得困惑和文件损坏没有获得改善。 – linuxero 2012-08-09 13:55:48