我有一个远程服务器,我在其上创建了一个裸 git 存储库。
我想创建一个钩子,以便在任何给定分支上收到的最新代码上运行给定脚本。
我知道post-receive
钩子可以用它。但是我想做以下事情:
- 获取收到代码的分支。
- 在临时位置签出代码并对其运行操作。
我该怎么做以上?
请参阅“ Git post-receive for multiple remote branches and work-trees ”中结合的两种技术:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
git --work-tree=/path/under/root/dir/live-site/ checkout -f $branch
echo 'Changes pushed live.'
fi
if [ "dev" == "$branch" ]; then
git --work-tree=/path/under/root/dir/dev-site/ checkout -f $branch
echo 'Changes pushed to dev.'
fi
done