如何通过Mercurial将代码推送到多个服务器?

时间:2010-07-21 10:25:46

标签: mercurial

我们如何将代码推送到多个服务器?我们有许多服务器需要具有相同的代码副本。很难推送到个人服务器。我知道mercurial有钩子,但没有一个能给出正确的解决方案。

3 个答案:

答案 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 -