git clone した後 git sudmobule init が失敗するときの対処方法
submodule を含むリポジトリを clone した直後は、ディレクトリは存在しますが実ファイルが存在しません。以下のコマンドで初期化する必要があります。
$ git clone git://mojamoja/uso.git
$ cd uso/
$ git submodule init
$ git submodule update
これで実ファイルがローカルにダウンロードされます。
…らしいですが、うまくいきませんでした。
私の場合、”git submodule init” を叩いたら以下のエラーが出ました。
No submodule mapping found in .gitmodules for path 'chef-repo/cookbooks/ant'
原因はプロジェクト内の .gitmodules にありました。
Windows で “git submodule add” した時に一部の path が “\” という表記になっており、これを git がうまく解釈できなかった模様。
[submodule "chef-repo\\cookbooks\\java"]
path = chef-repo\\cookbooks\\java
url = git://github.com/opscode-cookbooks/java.git
“\” を “/” に置換してやればOKです。
[submodule "chef-repo/cookbooks/ava"] path = chef-repo/cookbooks/java url = git://github.com/opscode-cookbooks/java.git
これで “git sudmoule init” が成功するようになりました。