Bitbucketに`git push` した時に自動的にVPSで`git pull` する方法


非公開のリポジトリが持てるBitbucketに非公開のプロジェクトを公開しておいて、`git pushしたら自動的にサービスを動かしてるVPS上でgit pull` を動かす方法

コツ

*外部からアクセスできるgit pullを行うスクリプトを作成して、BitbucketからのIPで制限をかける。

やり方

Bitbucketでプロジェクトを選んで右上辺りの歯車アイコンを選択して管理画面に入って、
Hooks -> Post を選択して必要なスクリプトをURLで指定する。

スクリプトはこんなの。

<?php
    $output = shell_exec('git pull');
    echo "<pre>$output</pre>";
?>

参考

git pull - Git pulling depends on the current dir - Stack Overflow
http://stackoverflow.com/questions/9851644/git-pulling-depends-on-the-current-dir

でも結局やってません

git pullをゲスト権限で実行させるか、スクリプト内でsudoしてユーザーを変更する必要があったので普通にGitのDeamon入れたほうが楽そうなので

ローカル -> Bitbucket -> VPS

の流れじゃなくて

ローカル -> VPS -> Bitbucket

でVPS側に push した時の post hook で Bitbucketに VPSから push することにしました。

詳しいやり方はまた別の投稿で。

別の方法

git pushした時に2箇所同時に上げればいいということに気づいたので

.git/config
[remote "all"]
    url=ssh://user@server/repos/g0.git
    url=ssh://user@server/repos/g1.git

と書くのが一番でした。秘密鍵をサーバーに置かなくても良いので更にGood!

参考