Как перенести код на несколько серверов Mercurial? - PullRequest
12 голосов
/ 21 июля 2010

Как мы можем отправить код на несколько серверов? У нас есть много серверов, которые должны иметь одну и ту же копию кода. Это трудно подтолкнуть к отдельному серверу. Я знаю, что у Mercurial есть крючки, но ни один из них не дает правильного решения.

Ответы [ 3 ]

19 голосов
/ 21 июля 2010

На вашем центральном сервере вы создаете changegroup hook.

Таким образом, ваш центральный сервер будет иметь следующую hgrc:

[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3

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

1 голос
/ 21 июля 2010

В вашем файле .hg/hgrc должна быть директива [paths], которая содержит ваше местоположение по умолчанию. Как насчет добавления что-то вроде:

[paths]
default = http://server1
server2 = http://server2

А затем сделайте:

hg push default
hg push server2
0 голосов
/ 21 июля 2010

Я предполагаю, что один из серверов является главным репо, остальные - развертывания.в такой ситуации я бы взаимодействовал только с мастером и оставлял развертывания до cron:

cat >$HOME/bin/dist <<'EOM'
#!/bin/sh
cd ${1:?}
tip=$(hg tip --template '{node}')
for r in $remotes; do
  hg push -r $tip $r
done
EOM

chmod +x $HOME/bin/dist
(crontab -l; echo '*/5 * * * * $HOME/bin/dist /var/repos/master') | crontab -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...