質問: 外部参照する際のgitの使い方について gitでプロジェクトを管理する際に、外部で開発されているFrameworkを使用してアプリを作成する場合どのように管理するのが良いのでしょうか? この時、Frameworkとアプリのプロジェクトは別々になり、pushやpullする先が変わってくるかと思います。 svnには、svn:externalsという外部参照する概念があったと思うのですが、それに対応する概念はgitのsubmodulesなのでしょうか? アドバイスいただけたら幸いです。
回答: あくまでも個人的な好みの話です。 svn の externals に対応する機能は、git では submodules だと思います。 それらに、どんな利点を求めるかにもよると思うのですが、個人的には VCS (Version Control System) の範疇を超えていると思ったりします。 依存するライブラリのバージョンの違い、というと一見 差異が少ないような感じ設けますが、こういった質問が出るということは、そうでもないケースがままある、ということ。 ものによっては、メジャーバージョンが上がったら、考え方自体が丸っと変わったりすることもある。 それは、もう、別のライブラリとして扱った方が良いんじゃないかと。 なので、複数のライブラリ(バージョンの違いを含む)を受け入れるものを作るなら、こんな戦略を取ると思います。 * ライブラリやバージョンの判定を入れて、ひとつのものとして取り込んでいく * どうにもならないなら、ブランチを別にする(古い方はあまり更新されないはず そのターゲットにしてるものがライブラリのバージョンがどうとか、を気にしたくないのであれば、依存するライブラリのバージョン差を吸収するライブラリをかませて、それに依存するとか。 VCS の機能の範疇外にしてあげた方が、VCS がまっとうに育つような気がします。