Встраивание репозитория github в ртутный репозиторий (kiln) - насколько он интегрирован? - PullRequest
1 голос
/ 19 января 2012

Обобщенный вопрос:

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

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

Исходя из моего вопроса, на который так отлично ответили здесь , некоторыемоего стороннего кода находится в папках, которые я недавно загрузил с открытым исходным кодом на github.Так как на этом этапе я не использовал контроль версий, те папки, в которых были только стандартные папки, которые теперь были включены в качестве вложенных репозиториев в Mercurial.

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

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

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

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

1 Ответ

1 голос
/ 19 января 2012

Правильно ли я сказал, что когда я клонирую родительские (Mercurial) репозитории, эти файлы будут извлечены из 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 сделает это через прокси?например, идентификатор, который я должен был сделать hg commit -S будет ли mercurial вызывать git от моего имени для обработки этого?

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

...