我有三台机器:“devel”、“repo”和“server”。git push
在更改存储库之前,我需要在开发机器上做一些整理工作。我称之为“预检”。然后,我去服务器,git pull
然后我需要做更多的家务来准备一切以更新和重新启动 Web 应用程序。我将服务器上的这种管理称为“postflight”。
我可以通过运行 Perl 脚本来进行预检,该脚本实际上进行预检内务处理,然后执行 git add、commit、push 舞蹈。
我想自动化另一端的过程。也就是说,当 repo 收到更新时,我想运行更新服务器。在本地 repo 上,这是一个也有 repo 的“服务器”,我可以通过下面的post-receive
钩子来做到这一点
GIT_WORK_TREE=/path/to/directory git checkout -f
我的问题:
如何运行
post-receive
挂钩(或其他方式)来自动更新服务器上恰好是另一台机器的目录?和服务器更新后如何运行 postflight Perl 脚本?
更新:我
post-checkout
在“测试”上创建了一个钩子。钩子是我想要在“test”从“repo”接收到代码的更新副本后执行的 Perl 脚本。但是,Perl 脚本永远不会运行。我也尝试过将钩子重命名为,post-merge
但也没有任何乐趣。如何确保客户端上的钩子在更新时运行?