Добавление Git-репозитория в Mercurial - PullRequest
17 голосов
/ 30 октября 2010

Я пытался настроить проект, используя bitbucket, который имеет зависимости проекта, размещенные на github. Используя плагин Hg-Git Mercurial, я почти могу туда добраться.

Но когда приходит время толкать, все становится хлопотно.

Документация для Ртутные субпозитории состояния:

2,4 Push

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

Но это вызывает большую проблему, так как я не хочу выдвигать все вложенные репозитории (с чего бы мне?) - у меня есть только доступ для чтения к ним, поэтому github не допустит этого. На удаленный сервер необходимо отправить только главный репозиторий, но я не могу понять, как это сделать. hg хочет взять под свой контроль и подтолкнуть все вложенные репозитории, независимо от того, есть ли изменения. Есть ли способ обойти эту функцию ?

Единственные вещи, которые нужно нажать, это .hgsub и .hgsubstate. После того, как они были переданы по альтернативным маршрутам (обновление до набора изменений, в котором не существует вложенных репозиториев), можно затем обновлять и извлекать изменения из удаленных репозиториев, но если бы мне пришлось нажимать еще раз, пока набор изменений с субрепозитории, все испытание повторяется.

Ответы [ 4 ]

12 голосов
/ 30 ноября 2010

Для дальнейшего использования ветвь разработки mercurial (и, следовательно, предстоящая версия 1.8) теперь поддерживает нативные подпункты git.Этот конкретный случай реализован очень хорошо, и отправка из корневого репозитория скажет субпредставлению git только, если неизвестно, что его удаленный репозиторий имеет текущий коммит.

4 голосов
/ 31 октября 2010

Это невозможно из-за метода толкания Mercurial.Это по замыслу ошибка.

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

Возможно, в будущем Hg-Git будет обновлен для автоматической обработки этого варианта использования..

2 голосов
/ 31 октября 2010

Я думаю, вы должны использовать несколько репозиториев; DVCS так лучше работает.

Например, создайте один репозиторий, содержащий зависимости от github. Вы только тянете в этом репо, чтобы получить изменения, вы никогда не продвигаете. Тогда у вас есть еще один репозиторий для вашего проекта, для разработки. Здесь вы можете делать все, что хотите. А затем вы ссылаетесь на свой собственный репозиторий hg для зависимостей.

Вот если я правильно понял вашу проблему и то, что вы пытаетесь сделать:)

0 голосов
/ 30 октября 2010

Если у вас нет исходящих наборов изменений в под-репозитории, «push» фактически не должен делать ничего, кроме как получить список последних наборов изменений из удаленного репозитория.Следовательно, фактическая часть «толчка» не произойдет.Я успешно использовал репозитории BitBucket только для чтения в качестве подмодулей.

...