git で post-receive 。別のレポジトリにもpush

gitlab にpushした後に、自動でBitbucketにもpushしてほしい時の post-receive

gitlab の hooks は、custom_hooksに置く

vi xxx.git/custom_hooks/post-receive

GIT_REMOTE="bitbucket"

while read OLDREV NEWREV REFNAME
do
        BRANCH=`git rev-parse --symbolic --abbrev-ref "${REFNAME}"`

        echo "Push '${BRANCH}' branch to remote '${GIT_REMOTE}'"
        git push --tag ${GIT_REMOTE} ${BRANCH}
done

これで、ローカルからgitlab にpushすると、Bitbucketにも連鎖的にpushされるようになる。


別レポジトリへのpush処理の時間がかかりそうで
バックグラウンドプロセスで実行する場合は

vi xxx.git/custom_hooks/post-receive

GIT_REMOTE="bitbucket"

while read OLDREV NEWREV REFNAME
do
        BRANCH=`git rev-parse --symbolic --abbrev-ref "${REFNAME}"`

        echo "Push '${BRANCH}' branch to remote '${GIT_REMOTE}'"

        nohup git push --tag ${GIT_REMOTE} ${BRANCH} > out.log 2> err.log &
done