それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

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の合わせ技にしました.