Как мы можем нажимать код на несколько серверов? У нас много серверов, которые должны иметь одну и ту же копию кода. Трудно нажимать на отдельный сервер. Я знаю, что у mercurial есть крючки, но ни один из них не дает правильного решения.
Как перенести код на несколько серверов Mercurial?
Ответ 1
На центральном сервере вы создаете changegroup.
Таким образом, ваш центральный сервер будет иметь следующий hgrc:
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
У вас может быть несколько крючков для одного и того же события, поэтому это не должно быть проблемой.
Преимущество крюка changegroup над крюком набора изменений заключается в том, что он выполняется намного реже.
Ответ 2
В вашем файле .hg/hgrc
у вас должна быть директива [paths]
, которая содержит ваше местоположение по умолчанию. Как насчет добавления чего-то вроде:
[paths]
default = http://server1
server2 = http://server2
И затем сделайте a:
hg push default
hg push server2
Ответ 3
Я предполагаю, что один из серверов - это мастер-репо, остальные - развертывания. в такой ситуации я бы взаимодействовал только с мастером и оставил развертывания до 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 -