Mercurial subrepos, что я делаю не так?
У меня есть проверка проекта на моей машине, к которому я добавил подпункт. Хорошо работает на этой проверке, но когда я клонирую проект в другом месте, он не клонирует подпункты. .hgsub
подталкивается к default
,
Dir структура
./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
он не делает никаких попыток получить подпункт. Что мне не хватает?
2 ответа
Я вроде нашел решение. Проблема заключалась в том, что .hgsubstate
файл не был создан. Я создал один вручную, используя хеши, полученные с помощью hg --debug id -i lib/projB/
Таким образом, ситуация была такой:
.hgsubs
lib/projB = [hg]ssh://hg@bitbucket.org/user/projB/
.hgsubstate
1e07729703d0e9447ae174a732bfd3e1cbdd96f4 lib/projB
Интересно, что после совершения .hgsubstate
это было автоматически регенерировано.
После этого изменения клонирование работает, как и ожидалось, рекурсивно клонируя как основное репо, так и субрепо:
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
Прочитайте тему "Subrepos" из части "Упражнения по Mercurial Kick Start", часть "Удаленные субпозитории"
Обратите внимание, что мы клонируем хранилище в то место, где оно должно быть, потому что просто добавляем запись в
.hgsub
Файл не будет ничего делать, если нет хранилища и заданного местоположения.