无法从主仓库中克隆Mercurial subrepo,失败并显示“未知版本”?

时间:2012-03-12 13:42:47

标签: mercurial mercurial-subrepos

我有一个像这样的Windows文件结构:

Stable
    ProjectA
    SharedLibrary

Stable包含主要回购。 ProjectASharedLibraryStable的子版。 .hgsub文件包含:

ProjectA = ProjectA
SharedLibrary = SharedLibrary

在大多数情况下,一切似乎都能正常运作。主回购将识别子回报,我可以在主回购上执行hg status -S之类的操作,它将通过子回报进行递归。 commit似乎也能正常运作。

当我尝试从clone(主要回购)Stable时,尝试使用以下消息克隆ProjectA子参数时失败:

unknown revision 'a855f4fe17c393d5863409f1443fc93b36787fa9'
[command returned code 255 Mon Mar 12 09:25:47 2012]

但是,我已经确认修订是正确的并且存在于ProjectA子参数中。我可以clone每个subrepo没有任何问题。

到目前为止,我尝试过: 1)删除每个存储库并重新开始。 2)重新安装TortoiseHg / Mercurial。 3)确保.hgsubstate中列出的修订版本正确并存在于每个子实例中。

有什么方法可以解决这个问题吗?

编辑: 当clone(主)repo的Stable失败时,它会使目标目录中包含Stable的克隆而没有任何子目录。我可以转到克隆的Stable,执行hg update tip,它会成功克隆ProjectA子参数但无法克隆SharedLibrary并出现相同的“未知修订版”错误。然后我可以再次运行hg update tip,它将成功克隆SharedLibrary子参数。在这一点上,一切都是正确的,因为如果克隆首先正常工作将是正确的。

编辑2:.hgsubstate的内容:

a855f4fe17c393d5863409f1443fc93b36787fa9 ProjectAd72ef29a5656e5413322c1d20d5830448d558605 SharedLibrary

ProjectASharedLibrary的变更集ID之间没有空格,但我想这就是Mercurial的做法。 .hgsubstate中的两个变更集都存在于respsective subrepo中。

编辑3:来自hg log --debug -r tip subrepo的ProjectA。显示正确的变更集

Z:\Programming\KSuite\Stable\Client\KClient>hg log --debug -r tip
changeset:   4:a855f4fe17c393d5863409f1443fc93b36787fa9
tag:         tip
parent:      3:eb01e88027c893267422fcb67f035ba31d8cdbdc
parent:      2:5b5ffd7f96915ca792507820ccfbee35707148d0
manifest:    4:e90960833c0708ec7f99ccded11c46ca45b46542
user:        Casey ******** <*redacted*@.com>
date:        Fri Mar 09 18:22:50 2012 -0500
files:       .hgignore
files-:      KClient.suo
extra:       branch=default
description:
Merging changes in Stable to Dev.

0 个答案:

没有答案