gitのsubmoduleを使ったことがなかったので調べた
submoduleは、あるプロジェクトで作業をしているときに、プロジェクト内で別のプロジェクトを使わなければならない時に使う
例えば、自身が別途開発している複数の親プロジェクトから利用しているライブラリなど
あるGitリポジトリを別のGit リポジトリのサブディレクトリとして扱うことができるようになる
submoduleの作り方
git submodule addでsubmoduleを追加できる
$ git submodule add https://github.com/chaconinc/DbConnector
デフォルトでは、このコマンドで指定したリポジトリと同名のディレクトリに、サブプロジェクトのデータが格納される
git statusを見ると
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitmodules
new file: DbConnector
.gitmodulesファイルには、プロジェクトの URL とそれを取り込んだローカルサブディレクトリの対応が格納されている
[submodule "DbConnector"]
path = DbConnector
url = https://github.com/chaconinc/DbConnector
注意事項
.gitmodules ファイルに記述された URL を他の利用者はクローン/フェッチしようとするので、他の利用者もアクセスできる URL にする
submoduleを含むプロジェクトのクローン
cloneしたら、以下のコマンドを実行
git submodule update --init
--init(-iでも良い)でローカルの設定ファイルを初期化し、update でプロジェクトからのデータを取得し、親プロジェクトで指定されている適切なコミットにチェックアウトされる
今回はただ単純にsubmoduleとして使いたいだけ、上流の更新はときどき取り込むが、チェックアウトした内容を変更したりはしない使い方になるのでここまでの理解に留めておく