我已经在我的机器上检查了一个项目,我已经添加了subrepo。在该结账时工作正常,但是当我在其他位置克隆项目时,它不会克隆子项目。 .hgsub
被推送到default
。
目录结构
./projA/ ## - the main project directory
./projA/lib/projB/ ## - the sub-repo project directory
.hgsub
:
lib/projB = [hg]ssh://hg@bitbucket.org/username/projB
现在当我做hg clone ssh://hg@bitbucket.org/username/projA
时,它不会尝试获取subrepo。我错过了什么?
答案 0 :(得分:0)
阅读“Mercurial Kick Start Exercises”中的“Subrepos”主题,"Remote Subrepositories"部分
请注意,我们将存储库克隆到应该存在的位置,因为除非存在存储库和给定位置,否则只添加
.hgsub
文件中的条目将不会执行任何操作。
答案 1 :(得分:0)
我找到了解决方案。问题是没有生成.hgsubstate
文件。我使用通过hg --debug id -i lib/projB/
获得的哈希手动创建了一个,因此情况就像:
.hgsubs
lib/projB = [hg]ssh://hg@bitbucket.org/user/projB/
.hgsubstate
1e07729703d0e9447ae174a732bfd3e1cbdd96f4 lib/projB
有趣的是,在提交.hgsubstate
后,它确实会自动重新生成。
在此更改后,克隆按预期工作,递归克隆主要repo和subrepo:
hg clone ssh://hg@bitbucket.org/user/projA
destination directory: projA
requesting all changes
adding changesets
adding manifests
adding file changes
added 13 changesets with 24 changes to 10 files
updating to branch default
cloning subrepo lib/projB from ssh://hg@bitbucket.org/user/projB
requesting all changes
adding changesets
adding manifests
adding file changes
added 653 changesets with 3864 changes to 1899 files