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 Файл не будет ничего делать, если нет хранилища и заданного местоположения.

Другие вопросы по тегам