Git のサブモジュールのサポートを調べることができます。サブモジュールを使用すると、ある git リポジトリを別の git リポジトリ内に埋め込むことができます。この種の代替ソリューションはありますが、私自身は使用していません。
例は次のようになります。
$ git clone git://github.com/username/project.git
$ cd project
$ git submodule add git://github.com/username/framework.git framework
$ git commit -m "added framework submodule"
サブモジュールを含むリポジトリを複製する場合は、次の--recursive
オプションを使用する必要があります。
$ git clone --recursive git://<repository-with-submodules>.git
または、定期的にクローンを作成してから実行することもできます。
$ git submodule init
$ git submodule update
詳細については、リンクされたドキュメント (およびgit submodule --help
) を参照してください。
サブモジュールに変更が加えられた場合は、次のようにします。
# first update the submodule just like any other git repository
$ cd project/framework
$ git pull
# now you have to record the new commit in the parent repository
$ cd ..
$ git commit -m "updated framework submodule"
git は特定のサブモジュールに関連付けられた特定のコミットの記録を保持するため、最後の手順が必要です (そのため、誰かが親を複製すると、サブモジュールの最新のリビジョンではなく、そのバージョンのサブモジュールが取得される可能性があります)。親リポジトリで意図したとおりに動作するのを妨げる重大な変更が行われている)。したがって、サブモジュールを更新する場合は、新しいコミットを親に記録する必要があります。
framework
サブモジュール内で変更を行う場合git push
は、他のリポジトリの場合と同じように変更します。次に、親モジュールで新しいリビジョンをコミットする必要があります。