2011-02-10 7 views
85

Я работаю с Git репозиториев следующим образом:Как добавить удаленные репозитории в Mercurial?

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

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

ответ

116

Вы добавляете записи в раздел [paths] файла вашего местного клона .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 

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

+21

Для всех, кто хочет видеть пульт дистанционного управления, используйте 'hg paths', что эквивалентно для' git remote -v'. – Keyo

+2

default-push (вместо, например, remote1) позволяет просто набрать «hg push». -push repository используется. – Christian

+3

@Christian 'default-push' является только необходимым/полезным, если ваша обычная push-цель отличается от обычного источника тяги. Если они одинаковы (или вы никогда не тянете), тогда' default 'достаточно. –

5

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

hg-git general idea

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

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

+1

У меня есть возможность переносить все на mercurial, я хотел бы использовать только один инструмент для управления исходным кодом. Преобразуйте, как только репозиторий построит соответствующие структуры, а затем только mercurial команды для производства.Я знаю, что и git, и mercurial могут сотрудничать, но никогда не пробовали. – topless

+2

^Chris: так ваш вопрос: как мне преобразовать Git repos в Mercurial? "Или" как объявить/настроить удаленное Hg-репо? "(Например, http://superuser.com/questions/43686/setting- up-a-remote-mercurial-repository) или «где объявлен пул в Hg?» (http://crazythinking.wordpress.com/2009/03/07/starting-a-mercurial-hg-remote-repository /) – VonC

0

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

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).

2

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

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

Удачи.

Смежные вопросы