How to push code to multiple servers by Mercurial?

前端 未结 3 1931
[愿得一人]
[愿得一人] 2021-02-02 18:11

How can we push code to multiple servers? We have many servers which needs to have the same copy of the code. It is difficult to push to individual server. I know mercurial has

相关标签:
3条回答
  • 2021-02-02 18:32

    i assume that one of the servers is a master repo, the rest are deployments. in such a situation, i would interact with just the master and leave the deployments up to 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 -
    
    0 讨论(0)
  • 2021-02-02 18:54

    In your .hg/hgrc file you should have a [paths] directive, which contains your default location. What about adding something like:

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

    And then do a:

    hg push default
    hg push server2
    
    0 讨论(0)
  • 2021-02-02 18:57

    In your central server you create a changegroup hook.

    So your central server would have the following hgrc:

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

    You can have multiple hooks for the same event, so that shouldn't be an issue.
    The advantage of the changegroup hook over the changeset hook is that it is run far less often.

    0 讨论(0)
提交回复
热议问题