我有一个像这样的Windows文件结构:
Stable
ProjectA
SharedLibrary
Stable
包含主要回购。 ProjectA
和SharedLibrary
是Stable
的子版。 .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
ProjectA
与SharedLibrary
的变更集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.