$ DIR="/path/to/myrepository" $ git --git-dir=$DIR/.git pull
僕はローカルのテストでのテストとは別に、テスト用のサーバを外部アクセスできる形で立ててnode.jsのプログラムを動かしてるんですが、git-push後にいちいちサーバにログインしてnode.jsを再起動してるとストレスがマッハだったので、上記方法とGit hooksのうちpost-receive
を利用して、サーバ側で自動的に再起動させるようにしました。その時の一つとして、上記のコマンドを利用してます。
post-receive
?
git-pushを行った時に、リモート側のレポジトリにて、任意のシェルスクリプトを実行できる仕組みがあります。これがGit hooksのうち、post-receive
です。Git - Git フックとかに記述があります。
つまるところ
僕がしたかったnode.jsサーバの再起動は以下のような感じ。
- テストサーバに、通常開発で利用しているリモートレポジトリ(myremoterepoitory.git)と、そのレポジトリからクローンしたWeb公開用レポジトリ(myrepository)を用意しておきます
$ git clone ../myremoterepository.git
みたいな感じで、ローカルでcloneできます
myremoterepository.git/hooks/post-receive
を作成して、以下のような感じで書いておく
#!/usr/bin/env bash # 環境変数読み込み source $HOME/.bash_profile source $HOME/.bashrc # git-pull DIR="/path/to/myrepository" git --git-dir=$DIR/.git pull cd $DIR # 任意のサーバ更新処理... #forever restartall
以上で準備完了です。これでクライアントから普通にgit-pushすれば自動的に再起動されて、空いた時間でおいしいお酒が飲めそうです。