質問: Gitのリポジトリ管理について、お知恵を拝借したく存じます。 機能を100個持つような一つのシステムのプログラムを、一つのシステムで管理する方法について、良い方法はないでしょうか。 今想定しているのは下記2点です。 (1) 一リポジトリで100機能すべて管理 (2) 1機能ずつ別のリポジトリで管理 (3) その他(全く想像つきません) 今まではSubversionで、機能1~100まで一つのリポジトリで管理していました。 開発者は20人程度で、全員機能1~100すべてにアクセス可能です。 必要な機能だけ随時Checkoutしてきて、その時不要な機能は随時ローカルから消していました。 Gitだと今必要な機能は1~10までなのに、不要な11~100までもローカルにある状況がどうにも怖いし、重くてPullに時間がかかりそうだと思いました。 ただ、別のリポジトリにすると100個ものリポジトリを管理できるのかが不安です。 一人ひとり、100個のディレクトリを作成し、それぞれにCloneしてくるのはあんまりにも現実的ではなく。 さらに10個の機能が必要な場合、10回Pullしてこないといけないのは結構な手間だと存じます。 このような場合、どうリポジトリを作り、管理していけば良いでしょうか。 是非、皆さまのお知恵をお貸しください。
回答: 全部を一つのリポジトリで管理する ================ 想定しているシステムの大きさがどのくらいなのかわからないのですが、コード全体で数GBを超えるような非常に巨大なものなのでしょうか。 そうでもない場合、Gitは更新を差分で取得しているため、全機能を毎回取得していても問題にはならないかと考えます。 それでも別リポジトリで管理したい場合 ================== Gitにはサブモジュールという機能があり、リポジトリから別のリポジトリを参照することができます。 この機能を利用することで、一度に全部の子リポジトリを最新版に更新したり、あるいは各親リポジトリの参照する子リポジトリをそれぞれのブランチ、あるいはコミットに指定するといったことも可能です。 この機能を利用し、100個の機能それぞれでリポジトリを作りつつ、全部をまとめた一つのシステム側するのが一番求めている要件に合致するかと思われます。 Git - サブモジュール Git submoduleの押さえておきたい理解ポイントのまとめ - Qiita