Mercurial subrepos,我做错了什么?

时间:2013-09-25 12:27:28

标签: mercurial mercurial-subrepos

我已经在我的机器上检查了一个项目,我已经添加了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。我错过了什么?

2 个答案:

答案 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