Git Submoduleを使うと,.gitがディレクトリじゃなくなる
やっていたこと
あるアプリケーションをDockerで動くようにDockerfile
,およびローカル実行のためのdocker-compose.yml
を書いていた.
ビルド時にアプリケーションをイメージに含めたいので,サブディレクトリにアプリケーションのリポジトリをサブモジュールとして置いた.
実行時はこんな手順で手軽にできればいいなと思った.
$ git clone git@hogehoge:foobar.com/docker-repo $ git submodule init $ git submodule update $ docker-compose build $ docker-compose up
問題
アプリケーションが内部でgitを使っていたらしく,fatal: Not a git repository: ../../.git/modules/web-app/app
とのお叱りを頂いた.
なぜだろうと思い,.git
ディレクトリへ移動しようとすると...
cd: not a directory: .git
な,なんだってーーーッ!?
$ cat .git gitdir: ../../.git/modules/web-app/app
結論
Git Submoduleを使うと,サブモジュールとして埋め込まれたディレクトリ配下の.git
は親のディレクトリの.git
への参照を書いたやつに化けるっぽいです.
サブモジュールを諦めて,git clone
と.gitignore
の合わせ技にしました.