Как добавить удаленные репозитории в Mercurial?

Я работаю с репозиториями Git следующим образом:

  • У меня есть главный репозиторий и несколько пультов на разных производственных машинах.
  • Я нажимаю производственный код на пульты дистанционного управления и перезапускает службы, чтобы изменения вступили в силу.

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

Ответ 1

Вы добавляете записи в раздел [paths] вашего локального файла clone .hg/hgrc. Здесь приведен пример раздела, который будет находиться в файле .hg/hgrc:

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

Затем вы можете использовать команды типа hg push remote1 для отправки наборов изменений в это репо. Если вы хотите, чтобы удаленное репо для обновления было рабочим каталогом, вам нужно поместить крюк changegroup на место в этом удаленном месте, где выполняется обновление. Это выглядит примерно так:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

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

Ответ 2

Вы можете посмотреть hg- git Плагин GitHub:

hg-git general idea

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

Примечание. Я не тестировал этот инструмент с последними версиями Mercurial.

Ответ 3

если вы хотите добавить путь по умолчанию, вам нужно работать с default в вашем файле ~project/.hg/hgrc. Как следует:

[paths]
default = https://path/to/your/repo

Удачи.

Ответ 4

Если вы используете Unix и у вас установлен Git, вы можете использовать эту функцию bash, чтобы легко добавить путь к пультам без текстового редактора:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

Затем вызовите его с помощью:

$ add-hg-path remote1 https://path.to/remote1

Если кто-то хотел бы построить эквивалент Powershell, я хотел бы также включить это. Другие улучшения потенциала включают проверку ошибок по параметрам и факторинг вызова на $(hg root).