ベア git リポジトリを作成したリモート サーバーがあります。
特定のブランチで受け取った最新のコードで特定のスクリプトが実行されるように、フックを作成したいと思います。
post-receive
フックが使えることはわかっています。ただし、次のことを行いたいです。
- コードを受信したブランチを取得します。
- 一時的な場所でコードをチェックアウトし、操作を実行します。
上記を行うにはどうすればよいですか?
「 Git post-receive for multiple remote branchs and work-tree」で組み合わせた両方の手法を参照してください。
#!/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