Git post-接收挂钩

Git post-receive hooks

我有两个不同的服务器。一个用于 repository,另一个用于 web application。 我正在尝试设置 post-接收挂钩。 当我将代码推送到存储库服务器时,我希望项目代码位于应用程序服务器中。

服务器

$ mkdir /home/yo/repo.git
$ cd /home/yo/repo.git
$ git init --bare
$ cd /hooks
$ touch post-receive.sh
$ chmod +x post-receive.sh

post-receive.sh

#!/bin/bash
while read oldrev newrev ref
do
git --work-tree=appuser@appserver:/var/www/multiverse --git-dir=/home/yo/repo.git checkout -f
done

本地

$ cd /home/Sites/multiverse
$ git init
$ git remote add origin repouser@reposerver:/home/yo/repot.git
$ git add .
$ git commit -am "initial commit"
$ git push origin master

如何使用 post-receive 实现此目的?

post-receive 脚本必须安装在裸 git (/home/yo/repo.git/hooks) 的 hooks 目录中,并且必须命名为 post-receive,不带任何扩展名.