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

2015年1月8日木曜日

npmでhubotがインストール出来ない場合の対処法

hubotでもやろうと思って
npm install -g hubot
したらエラーが出た。

npm ERR! peerinvalid The package flatiron does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer flatiron-cli-config@0.1.3 wants flatiron@~0.1.9
npm ERR! peerinvalid Peer flatiron-cli-users@0.1.1 wants flatiron@~0.1.9

npm list -g
でエラーを追求。
flatironでpeerがinvalidらしい

├─┬ jitsu@0.9.6
│ ├── colors@0.6.0-1
│ ├── complete@0.3.1
│ ├── dateformat@1.0.2-1.2.3
│ ├─┬ flatiron@0.2.5 peer invalid

上位のjitsuが原因らしいので、jitsuを再インストールする。

まず sudo npm uninstall -g jitsu
すぐさま sudo npm install -g jitsu すると

jitsu@0.14.0 /usr/local/lib/node_modules/jitsu
├── opener@1.4.0
├── progress@0.1.0

├── flatiron@0.3.11

バージョンが上がったので、 sudo npm install -g hubot coffee-script してインストールできた。