イラクリの考え方に基づいて、 、ここで私はとして働いてきたものである...私のレポでポスト受信
#!/bin/bash
MESSAGE=$(git log -1 HEAD --pretty=format:%s)
if [[ "$MESSAGE" == *\[staging\]* ]];
then
#action/update staging
# another method not being used...
# GIT_WORK_TREE=/path/to/working/site/ git checkout -q -f staging
echo "NOTE: Beginning Auto-Push to Staging Server... "
`git push staging`
echo "========================================================
======== Done! Pushed to STAGING.com =============
======== Thanks Captain. Keep up the good work! ========
========================================================"
elif [[ "$MESSAGE" == *\[production\]* ]];
then
#action/update production
echo "NOTE: Beginning Auto-Push to Production Server... "
# `git push production`
echo "========================================================
======== Done!!! Pushed to Production.com =======
======== Test immediately for any errors! =========
========================================================"
fi
注:
'git push staging'作業をするには、その作業ツリーに.git/hooks/post-reveiveフックが必要です。私はthis codeを使用しましたが、私は 'umask 002 & & git reset --hard'を追加しました。
私も、その作業ツリーの.git/configファイルにdenyreciveを追加する必要がありました:
[receive]
denycurrentbranch = ignore
注2:
(このセットアップはわずかなために...皆のためではありませんのでご注意くださいish)サイト&ダーティな更新はすばらしです。
ちょっとした提案(より一貫性と利便性が高いからです):devに1つ、テストに1つ、プロダクションに1つを使用してください。 "テスト"するたびに、フックがテスト環境を更新する必要があります(など)。 – KingCrunch
ご意見ありがとうございました – Irakli