我们如何将代码推送到多个服务器?我们有许多服务器需要具有相同的代码副本。很难推送到个人服务器。我知道mercurial有钩子,但没有一个能给出正确的解决方案。
答案 0 :(得分:19)
在中央服务器中,您可以创建changegroup挂钩。
所以你的中央服务器将有以下hgrc:
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
您可以为同一事件设置多个挂钩,因此这不应成为问题 changegroup hook优先于changeset钩子的优点是它的运行频率低得多。
答案 1 :(得分:1)
在.hg/hgrc
文件中,您应该有一个[paths]
指令,其中包含您的默认位置。添加如下内容:
[paths]
default = http://server1
server2 = http://server2
然后做一个:
hg push default
hg push server2
答案 2 :(得分:0)
我假设其中一个服务器是主服务器,其余服务器是部署服务器。在这种情况下,我会与主人交互并将部署保留到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 -