我有一个像这样的 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
subrepo 中。我可以clone
每个子仓库都没有任何问题。
到目前为止,我已经尝试过:1)删除每个存储库并重新开始。2) 重新安装 TortoiseHg/Mercurial。3) 确保 .hgsubstate 中列出的修订版是正确的并且存在于每个子存储库中。
有任何解决这个问题的方法吗?
编辑:当clone
(Stable
主)回购失败时,它会离开目标目录,克隆Stable
没有任何子回购。我可以去 cloned Stable
,做一个hg update tip
,它会成功克隆ProjectA
subrepo 但无法克隆SharedLibrary
,并出现相同的“未知修订”错误。然后我可以再次运行hg update tip
,它将成功克隆SharedLibrary
子存储库。那时一切都是正确的,就像克隆一开始就正常工作一样。
编辑2:内容.hgsubstate
:
a855f4fe17c393d5863409f1443fc93b36787fa9 ProjectAd72ef29a5656e5413322c1d20d5830448d558605 SharedLibrary
ProjectA
和变更集 id之间没有空格SharedLibrary
,但我想这正是 Mercurial 的做法。两个变更集.hgsubstate
都存在于相应的子存储库中。
编辑 3: hg log --debug -r tip
来自ProjectA
subrepo。显示正确的变更集存在
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.