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