Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

submoduleとsubtree、どっちで構成する?

More than 5 years have passed since last update.

なんだかその辺をググるとsubtreeラブな話が多いんだけど...。

subtreeを使う方がいい場合

subtree-mergeと呼ばれるようにマージしちゃうので修正を元のリポジトリに戻すのが面倒だが、マージした結果がリポジトリに含まれるので親リポジトリをcloneした時点で中身が入っている。

subtreeで取り込むとマージされてしまうのでsubtreeを使うのは 取り込むリポジトリに修正を戻さない場合 に限定するほうが良さそうだ。 変更をリポジトリごとに分類するのは人力 なので。

それと取り込んだリポジトリのアップデートを追う場合、取り込んだブランチでpullしてからそれを再マージすることになる。

submoduleを使う方がいい場合

リポジトリを取り込んでもリポジトリは分離されたままなので 取り込んだリポジトリに修正を戻す場合 はsubmoduleの方がずっと使い勝手がいい。subtree-mergeみたいに変更が混ざってしまって 人力で分離しなければならない ということもないし。

取り込んだリポジトリのアップデートに追随するのは一度ブランチを取り込んでおけばsubmoduleの方でpullするだけでいいし、変更はsubmoduleの方で為され、その変更を送るのも普通にpush。というように本当に普通の操作でできる。subtree固有の操作は親子関係に関することだけだ。

それと、submoduleの場合の「updateしないとソースが入ってない」という「欠点」はmakefileにでもupdateする文を書いておけば解決してしまうのであんまり欠点っぽくない。

結論

結局のところ大抵の物事と同様に、得手不得手を把握して使い分ければいい。という身も蓋もない結論になるわけだが、個人的にはsubmoduleの方が好み。subtreeの混ざるというのが気持ち悪いので。

tarosuke@github
https://bitbucket.org/tarosuke とかでなんか作ってる。個人に関して詳しいことはGoogle+とかFacebookの方を参照しておくれ。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away