Как работать с подмодулями Git в репо, конвертированном в Mercurial - PullRequest
9 голосов
/ 10 апреля 2011

Вот так:

$ cat .gitmodules 
[submodule "utils/external/firepython"]
    path = utils/external/firepython
    url = git://github.com/darwin/firepython.git
[submodule "utils/external/textile"]
    path = utils/external/textile
    url = git://github.com/jsamsa/python-textile.git

Пока это было еще Git-репо, мне нужно было запустить git submodule init, после чего случается какое-то волшебство.Поскольку я сейчас конвертировал репо в Mercurial (используя расширение hgext.git), я не знаю, что делать.Есть ли эквивалентный процесс (мне нужны эти 2 Git-модуля в моем репозитории Mercurial)?

1 Ответ

12 голосов
/ 10 апреля 2011

Mercurial поддерживает субпозитории различных видов: Mercurial, Subversion и Git. Таким образом, вы можете создать .hgsub файл с

utils/external/firepython = [git]git://github.com/darwin/firepython.git
utils/external/textile    = [git]git://github.com/jsamsa/python-textile.git

, и это сообщит Mercurial о создании клона ваших репозиториев Git при клонировании репозитория Mercurial. Вам нужно сделать клоны Git самостоятельно или скопировать их из другого места на вашем диске:

$ git clone git://github.com/darwin/firepython.git utils/external/firepython
$ git clone git://github.com/jsamsa/python-textile.git utils/external/textile
$ hg add .hgsub
$ hg commit -m 'Added Git subrepositories'

Затем вы заметите, что Mercurial добавил файл .hgsubstate в ваш репозиторий, где он хранит информацию о подкаталогах Git. Этот файл необходим для того, чтобы Mercurial знал, какую ревизию следует извлечь из ваших подпапок, когда вы создаете новый клон Mercurial.

Мой коллега написал руководство по субпозитарию , которое может оказаться полезным.

...