我有三台机器:“devel”,“repo”和“server”。在git push
对仓库的更改之前,我需要在开发机上做一些内务管理。我称之为“预检”。然后,我去服务器,git pull
,然后我需要做更多的内务处理准备一切更新和重新启动Web应用程序。我把这个管家叫做服务器“postflight。”
我可以通过运行实际执行预检管理的Perl脚本来执行预检,然后执行git添加,提交,推送舞蹈。
我想在另一端自动化该过程。也就是说,当repo收到更新时,我想运行更新服务器。在本地仓库,这是一个“服务器”,也有回购,我可以通过以下post-receive
钩子
GIT_WORK_TREE=/path/to/directory git checkout -f
我的问题:
如何运行post-receive
挂钩(或其他方式)来自动更新服务器上恰好是不同机器的目录?以及
如何在服务器更新后运行postflight Perl脚本?
更新:我在“测试”上创建了一个post-checkout
挂钩。钩子是我想在“test”从“repo”接收代码的更新副本后执行的Perl脚本。但是,Perl脚本永远不会运行。我也尝试将钩子重命名为post-merge
,但也没有那种喜悦。如何确保客户端上的挂钩在更新时运行?
答案 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