[追記] その2を書きました:
http://blog.s21g.com/articles/1411
長くなりそうなので続きはその2で!
railsを使っているとpluginなどは外部repoをそのまま使いたくなります。そこで前から聞いていたsubmoduleを使ってみたくなりました。しかしこのsubmodule、わりと最近導入されたようなのでgitのバージョンによって動作に違いがあるようです。
というわけで、まず私の環境を書いておきます:
shell>>
% git --version
git version 1.6.0.2
<<--
###git submodule add
rspecを例に:
shell>>
% git submodule add git://github.com/dchelimsky/rspec.git vendor/plugins/rspec
<<--
追加したらcommit and push
shell>>
% git commit -am "add submodule: plugins/rspec"
% git push origin master
<<--
これでサーバにsubmoduleが追加されました。他の人がpullなどすれば、submoduleを確認することができます(詳しくはその2を参照)
で、次にsubmoduleのstatusを確認してみます。
###git submodule status
git statusと同じようなコマンドでsubmoduleの状態が確認できます:
shell>>
% git submodule status
9dc19a3a593f4ce1b4e221889091cebd773ea5c4 vendor/plugins/cache_fu (heads/master)
-e110f2056783465b8d719bdb1ab5fd14e7650f56 vendor/plugins/rspec 651611999df3e57de6f36486b51abd3bf5d66cea vendor/rails (v2.2.0-1085-g6516119)
<<--
commit hashに-、+がついている時がある(上だとrspecに-がついてます)。
ざっくり説明:
- -がついているとまだ初期化されていない状態
=> git submodule update --initでok - +がついているとサーバでindexしているcommit hasと異なるcommit hashだよというお知らせ
=> git submodule updateでok