GRCを用いたsubmoduleの追加

AWSで開発するにあたってCodeCommitを使っています。

GRCはAWSのクレデンシャルを使ってgitが扱えるので非常に便利ですが、git submoduleで少々つまづいたのでメモ

何もしないとgit submoduleはプロトコルcodecommitを使えません。

GRCを用いたsubmoduleの追加

以下のコマンドでcodecommitプロトコルを常に許可する。

git config --global --add protocol.codecommit.allow always

そうするとgit submodule addすることが可能。この時credentialをurlに埋め込むとmoduleのconfigに残る。

git submodule addしたらルートに.gitmodulesを追加し以下を記述

[submodule "MODULE_NAME"]
    path = DIR_NAME
    url = GCR_URL

submoduleの同期

cloneして来たらsubmoduleは空の状態なので同期するためにgit submodule update --initしたいところだが、実行するとcredentialで怒られる

全員が共通のcredential名にして.gitmodulesに記載するというルールはナンセンスなのと、デプロイ時にもcredentialが必要になってしまうのでNG

代わりにプライベートURLを設定してそのURLにcredentialを埋め込んであげる。

git config submodule.terraform_modules.url PRIVATE_URL