0

我有三台机器:“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

我的问题:

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

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

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

4

1 回答 1

0

假设你的下一跳是 github;这是触发器应该看起来像

发布接收挂钩代码

    #!/bin/bash -x

    GIT_DIR=$(目录名 $(目录名 $(readlink -f $0)) )
    git push --mirror /home/mvaidya/mirroring_test/backup.git
    #above URL 这应该是 github
于 2012-06-25T11:08:13.787 回答