git submoduleがなんかおかしいけど原因よくわからん
submodule入りのgitリポジトリをMac上でcloneして初期化してみたらなんかうまく行かなかった。
よくわかんないけど、とりあえず現象を記録しておく。
OS:Mac OS X 10.6.8 (Snow Leopard)
Git:1.7.11.1 (公式のMac版インストーラで入れたやつ)
リポジトリ:https://github.com/pasela/studying-cakephp2.git
このリポジトリはsubmoduleをひとつ含んでいて、そのsubmoduleがさらにひとつsubmoduleを含んでいるという入れ子状態なんだけど、その入れ子のやつでおかしくなる。
$ cd /var/www/app $ git clone https://github.com/pasela/studying-cakephp2.git Cloning into 'studying-cakephp2'... remote: Counting objects: 1291, done. remote: Compressing objects: 100% (691/691), done. remote: Total 1291 (delta 424), reused 1287 (delta 420) Receiving objects: 100% (1291/1291), 1.35 MiB | 605 KiB/s, done. Resolving deltas: 100% (424/424), done. $ cd studying-cakephp2 $ git submodule update --init --recursive Submodule 'app/Plugin/TwigView' (https://github.com/predominant/TwigView.git) registered for path 'app/Plugin/TwigView' Cloning into 'app/Plugin/TwigView'... remote: Counting objects: 333, done. remote: Compressing objects: 100% (139/139), done. remote: Total 333 (delta 159), reused 311 (delta 140) Receiving objects: 100% (333/333), 53.25 KiB, done. Resolving deltas: 100% (159/159), done. Submodule path 'app/Plugin/TwigView': checked out '865c8c2d08e436070892d519f5b8566b070c5ba3' Submodule 'Vendor/Twig' (git://github.com/fabpot/Twig.git) registered for path 'Vendor/Twig' Cloning into 'Vendor/Twig'... remote: Counting objects: 12116, done. remote: Compressing objects: 100% (3231/3231), done. remote: Total 12116 (delta 7862), reused 11672 (delta 7467) Receiving objects: 100% (12116/12116), 1.55 MiB | 138 KiB/s, done. Resolving deltas: 100% (7862/7862), done. fatal: Not a git repository: ../../../../../../../../../private/var/www/app/studying-cakephp2/.git/modules/app/Plugin/TwigView/modules/Vendor/Twig Failed to recurse into submodule path 'app/Plugin/TwigView'
なんかfatal: Not a git repositoryのところがすごいことになってる。
ちなみにこのパス自体はちゃんと存在してるし、いちおうgitリポジトリになってるっぽい。
この時のgitの情報はこんな感じになっている。
$ cat .gitmodules [submodule "app/Plugin/TwigView"] path = app/Plugin/TwigView url = https://github.com/predominant/TwigView.git $ cat app/Plugin/TwigView/.git gitdir: ../../../.git/modules/app/Plugin/TwigView $ cat app/Plugin/TwigView/.gitmodules [submodule "Vendor/Twig"] path = Vendor/Twig url = git://github.com/fabpot/Twig.git $ cat app/Plugin/TwigView/Vendor/Twig/.git gitdir: ../../../../../../../../../private/var/www/app/studying-cakephp2/.git/modules/app/Plugin/TwigView/modules/Vendor/Twig
/var -> /private/varなのが怪しい?
OS Xは/varが/private/varへのリンクになっているので、この辺が影響してるのかもしれない?
$ ls -l /var lrwxr-xr-x@ 1 root wheel 11B 5 1 2010 /var@ -> private/var
ちなみに、なんでこんなことになってるのかは知らない。
あと、/tmpも/private/tmpになってるので、もしや…と思ったらやっぱり同じエラーになった。
んで、とりあえず/private/varが怪しい感じなので試しに別のところでやってみると上手くいった……。
$ cd ~/tmp $ pwd /Users/pasela/tmp $ git clone https://github.com/pasela/studying-cakephp2.git Cloning into 'studying-cakephp2'... remote: Counting objects: 1291, done. remote: Compressing objects: 100% (691/691), done. remote: Total 1291 (delta 424), reused 1287 (delta 420) Receiving objects: 100% (1291/1291), 1.35 MiB | 591 KiB/s, done. Resolving deltas: 100% (424/424), done. $ cd studying-cakephp2 $ git submodule update --init --recursive Submodule 'app/Plugin/TwigView' (https://github.com/predominant/TwigView.git) registered for path 'app/Plugin/TwigView' Cloning into 'app/Plugin/TwigView'... remote: Counting objects: 333, done. remote: Compressing objects: 100% (139/139), done. remote: Total 333 (delta 159), reused 311 (delta 140) Receiving objects: 100% (333/333), 53.25 KiB, done. Resolving deltas: 100% (159/159), done. Submodule path 'app/Plugin/TwigView': checked out '865c8c2d08e436070892d519f5b8566b070c5ba3' Submodule 'Vendor/Twig' (git://github.com/fabpot/Twig.git) registered for path 'Vendor/Twig' Cloning into 'Vendor/Twig'... remote: Counting objects: 12116, done. remote: Compressing objects: 100% (3231/3231), done. remote: Total 12116 (delta 7862), reused 11672 (delta 7467) Receiving objects: 100% (12116/12116), 1.55 MiB | 327 KiB/s, done. Resolving deltas: 100% (7862/7862), done. Submodule path 'Vendor/Twig': checked out '6e3a1c401608146e5302f7124404b7a0895484e0'
この時のgitの情報はこんな感じになっている。
$ cat .gitmodules [submodule "app/Plugin/TwigView"] path = app/Plugin/TwigView url = https://github.com/predominant/TwigView.git $ cat app/Plugin/TwigView/.git gitdir: ../../../.git/modules/app/Plugin/TwigView $ cat app/Plugin/TwigView/.gitmodules [submodule "Vendor/Twig"] path = Vendor/Twig url = git://github.com/fabpot/Twig.git $ cat app/Plugin/TwigView/Vendor/Twig/.git gitdir: ../../../../../.git/modules/app/Plugin/TwigView/modules/Vendor/Twig
rootまで遡るような意味不明な状態にはなってない。
この辺にヒントがあるような気もする。
$ pwd /var/www/app/studying-cakephp2 $ pwd -P /private/var/www/app/studying-cakephp2