Подтвердить что ты не робот

Добавление подрежима Git в Mercurial

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

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

Документация для Mercurial subrepositories гласит:

2.4 Нажмите

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

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

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

4b9b3361

Ответ 1

Это невозможно из-за метода Mercurial pushing. Это ошибка дизайна.

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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