Встраивание репозитория github в репозиторий Mercurial (печь) - насколько это интегрировано?

Краткий вопрос:

Возможны ли размещенные на github суб-репозитории в репозитории Mercurial / обжиговой печи, и если да, то они автоматически обновляются / клонируются, когда родительский репозиторий mercurial управляется командой hg clone или hg commit?

Подробный вопрос:

Следуя моему вопросу, на который так хорошо ответили здесь, часть моего стороннего кода находится в папках, которые я скачал некоторое время назад от усилий с открытым исходным кодом на github. Поскольку на этом этапе я не использовал контроль версий, те папки, в которых были только стандартные папки, которые теперь включены в качестве дополнительных репозиториев в mercurial.

Это явно не идеально, поскольку, во-первых, новые версии библиотек могут содержать исправления ошибок или новые функции, которые я хочу использовать в будущем. Мне также может потребоваться локальная настройка некоторых библиотек.

Я вижу, прочитав эту ссылку, что возможно иметь mercurial «знает» об этих URL-адресах git-сервера (и ревизиях), поэтому я могу затем Mercurial клонировать библиотеки, размещенные на github, прямо из их родительских репозиториев.

Правильно ли я говорю, что когда я клонирую родительские (ртутные) репозитории, эти файлы будут извлечены из github, без необходимости отдельно управлять этим с помощью git?

Также неясно, если бы я сделал это, и выяснилось, что код, возможно, потребуется настроить из этого репозитория, клонированного github, нужно ли мне использовать git для управления ревизиями локальных файлов или Mercurial сделает что по доверенности? например id, который я должен был hg commit -S, будет ли mercurial вызывать git от моего имени, чтобы справиться с этим?


person unsynchronized    schedule 18.01.2012    source источник


Ответы (1)


Правильно ли я говорю, что когда я клонирую родительские (ртутные) репозитории, эти файлы будут извлечены из github, без необходимости отдельно управлять этим с помощью git?

Да, клон репозитория Mercurial, который содержит подрепозитории, также вызовет клон подрепозитория. Это действительно происходит при обновлении. Mercurial замечает .hgsub файл и выдает необходимые команды hg clone и git clone. Он использует информацию в .hgsubstate, чтобы точно знать, какую версию нужно проверить.

Подрепозитории можно размещать где угодно. Для подрепозитория Git, объявленного как

foo = [git]https://github.com/user/repo.git

Mercurial просто выдаст соответствующую команду клонирования:

git clone https://github.com/user/repo.git foo

Тогда ваша ответственность - позже перейти в репозиторий foo и использовать Git для получения новых коммитов по мере необходимости. После получения / извлечения новых коммитов вы можете сделать фиксацию верхнего уровня, чтобы записать новое состояние подрепо в файл .hgsubstate. Используйте hg summary, чтобы увидеть, является ли субрепо «грязным» в этом смысле.

[...] мне нужно будет использовать git для управления версиями локальных файлов, или Mercurial сделает это через прокси? например id, который я должен был выполнить hg commit -S, будет ли mercurial вызывать git от моего имени, чтобы справиться с этим?

Когда вы редактируете файлы и создаете hg commit верхнего уровня, Mercurial сначала проверяет фиксацию вложенного репо (если вы используете hg commit -S или ui.commitsubrepos=True). Если вы сделаете push на верхнем уровне, Mercurial всегда будет сначала отправлять вложенные репозитории, чтобы у вас всегда был согласованный набор изменений на вашем сервере.

person Martin Geisler    schedule 18.01.2012