外部参照する際のgitの使い方について


gitでプロジェクトを管理する際に、外部で開発されているFrameworkを使用してアプリを作成する場合どのように管理するのが良いのでしょうか?
この時、Frameworkとアプリのプロジェクトは別々になり、pushやpullする先が変わってくるかと思います。
svnには、svn:externalsという外部参照する概念があったと思うのですが、それに対応する概念はgitのsubmodulesなのでしょうか?

アドバイスいただけたら幸いです。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2020/03/30 11:05:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

あくまでも個人的な好みの話です。

svn の externals に対応する機能は、git では submodules だと思います。
それらに、どんな利点を求めるかにもよると思うのですが、個人的には VCS (Version Control System) の範疇を超えていると思ったりします。

依存するライブラリのバージョンの違い、というと一見 差異が少ないような感じ設けますが、こういった質問が出るということは、そうでもないケースがままある、ということ。
ものによっては、メジャーバージョンが上がったら、考え方自体が丸っと変わったりすることもある。
それは、もう、別のライブラリとして扱った方が良いんじゃないかと。

なので、複数のライブラリ(バージョンの違いを含む)を受け入れるものを作るなら、こんな戦略を取ると思います。

  • ライブラリやバージョンの判定を入れて、ひとつのものとして取り込んでいく
  • どうにもならないなら、ブランチを別にする(古い方はあまり更新されないはず


そのターゲットにしてるものがライブラリのバージョンがどうとか、を気にしたくないのであれば、依存するライブラリのバージョン差を吸収するライブラリをかませて、それに依存するとか。

VCS の機能の範疇外にしてあげた方が、VCS がまっとうに育つような気がします。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません