在git repo上运行post-receive hook后,在服务器上运行Perl脚本

时间:2012-06-25 10:43:15

标签: git

我有三台机器:“devel”,“repo”和“server”。在git push对仓库的更改之前,我需要在开发机上做一些内务管理。我称之为“预检”。然后,我去服务器,git pull,然后我需要做更多的内务处理准备一切更新和重新启动Web应用程序。我把这个管家叫做服务器“postflight。”

我可以通过运行实际执行预检管理的Perl脚本来执行预检,然后执行git添加,提交,推送舞蹈。

我想在另一端自动化该过程。也就是说,当repo收到更新时,我想运行更新服务器。在本地仓库,这是一个“服务器”,也有回购,我可以通过以下post-receive钩子

来做到这一点
GIT_WORK_TREE=/path/to/directory git checkout -f

我的问题:

  1. 如何运行post-receive挂钩(或其他方式)来自动更新服务器上恰好是不同机器的目录?以及

  2. 如何在服务器更新后运行postflight Perl脚本?

    更新:我在“测试”上创建了一个post-checkout挂钩。钩子是我想在“test”从“repo”接收代码的更新副本后执行的Perl脚本。但是,Perl脚本永远不会运行。我也尝试将钩子重命名为post-merge,但也没有那种喜悦。如何确保客户端上的挂钩在更新时运行?

1 个答案:

答案 0 :(得分:0)

假设你的下一跳是github;这里的触发器应该是

发布接收挂钩代码

    #!/bin/bash -x

    GIT_DIR=$(dirname $(dirname $(readlink -f $0)) )
    git push  --mirror /home/mvaidya/mirroring_test/backup.git 
    #above URL this should be github