每天两次得到不一致的Mercurial子存储库状态(RepoLookupError)。怎么可能?

时间:2012-01-20 15:47:43

标签: mercurial kiln

最近迁移到Mercurial。

由于在旧的SVN回购中大量使用外部因素,我们相应地使用Subrepos并且有一个CI服务器经常拉/推中央存储库。因此,有些难以追踪究竟发生了什么,开发人员无法重现确切的步骤。

但是,在拉动之后我们得到了错误:

RepoLookupError: unknown revision '766981bc81dc78fe24d5fe5c7d68e36c66858e73'
abort: unknown revision '766981bc81dc78fe24d5fe5c7d68e36c66858e73'!

无法在任何地方找到此类更改集,也无法在服务器或本地存储库中找到。每天两次这种情况。

不知何故,来自服务器的是一个.hgsubstate,它引用了未知的子库变更集。

我们没有做任何可能有害的事情,只是通常的提交/拉动/合并。

根据我们的理解 - 这是一种不可能的情况(你不能提交.hgsubstate引用未提交或不存在的子存储库变更集)。

我们可能做错了什么或者如何发生这种想法?

修改:不使用mq

1 个答案:

答案 0 :(得分:2)

要创建未知(不可见)修订版,请执行以下操作。

客户1

  1. 提交subrepo
  2. 的更改
  3. 将subrepo中的提交与subrepo中的提交相关联(subrepo changeset id将在.hgsubstate文件中更新)
  4. 回滚subrepo提交(现在你在主仓库中找到了一个链接到subrepo中不存在的变更集)
  5. 将两个存储库推送到服务器
  6. 客户端2

    1. 从服务器拉出
    2. 发生错误!