2015年1月22日木曜日

Windowsのgitでpushされたらpullするスクリプトをpost-receiveに書く

gitで共有するリポジトリは--bareオプションを付けてinitし、ベアリポジトリで作成する。
ただその場合はファイルの実体はなく、下の画像のようなよくわからんファイル群しか見えない。




そこで、(gitを使わず)ファイルを直接開きたいニーズに答えるため、リポジトリからpullするだけの参照用ディレクトリを作ることがある。
その場合、ベアリポジトリにpushされたら自動的に参照用ディレクトリがpullしてくれると嬉しい。
それを実現するのがベアリポジトリのhooks/post-receiveスクリプト。
ここまでのgit構成を図にすると下のような感じ。




このときpost-receiveに指定するパスがわからなかった。
サーバマシン上のディレクトリ移動なんだから、gitのパス表記にのっとって
/C/share/folder/path
とか書いたらそんなパス無いと怒られる。

Windowsの共有フォルダを使用する場合のパス設定は
cd '//共有マシン名/参照用gitフォルダまでのパス'
git --git-dir='.git' pull origin master
とすれば良かった。

ググってもWindowsの共有フォルダで設定してる例がなかったのでわかりづらかったが、post-receiveのcdコマンドの前に
echo `pwd`
と打てば現在どこのフォルダにいるかわかるので、そこからパスを類推すれば良い。

ただこの構成だとpushした時にうっかり参照用ディレクトリのファイルを開いていると参照用ディレクトリが更新されなくなり、ベアリポジトリと齟齬が発生する状態となってしまうので注意が必要。

0 件のコメント:

コメントを投稿