Help us understand the problem. What is going on with this article?

Git、Mercurial、Subversion、Perforce、どれを使う?

More than 3 years have passed since last update.

ツールが苦手なことをさせるとユーザーが苦労するので苦手分野で判断するといいと思う。

Gitは巨大なバイナリファイルが致命的に苦手だ。DVCSなのも災いしてリポジトリが膨れ上がるので映像関係の人とかはGitは避けるのが無難。

Mercurial(Hg)もDVCSだがHgの場合はファイルを--largeを指定して追加することでそのファイルだけ集中型扱いできるので巨大なバイナリも扱える。バイナリはマージできないのでロックベースで管理するしかないが拡張機能で一応ロックもできるようだし(ロックしないでITSのチケットで同じファイルを触らないように管理するほうがいいと思うけど)。

svnとP4は集中型なのでソースコードを扱う能力はDVCSであるGitやHgよりかなり劣る。ソースコードだけを扱うならこの2つよりはGitやHgの方がいい。ただP4のマージツールはよくできている(見やすい)。VCSにP4を使わない場合でもオススメだ。

GitとHgはツリーを一部だけを作業領域として取り出す操作ができないので、そんな必要がある場合はリポジトリを分割して設計して、それらをsubmodule(Git)、subtreemerge(Git)、subrepository(Hg)などの機能で統合管理する必要がある。というようにGitやHgはツリーの一部だけを扱うのはあまり得意ではない。

とりあえず、

  • 大きなバイナリファイルも扱うならsvn、P4、Hg。
  • 巨大なデータを扱うならsvn、P4。
  • ソースを扱うならGit、Hg。
  • ツリーの一部を扱うならsvnやP4がいいが、GitやHgでもできないことはない。
  • HgはサブリポジトリにHgだけでなくSVNやGitのリポジトリを使えるのでそういう使い方をする場合はHg一択。
  • Gitのブランチは先頭へのポインタであってブランチ自体を認識しているわけではないのでGitをサブリポジトリ/サブモジュールとして使うとupdate/checkoutしたときに「生首(detached head)」状態になってしまう。Gitリポジトリをサブリポジトリ/サブモジュールで使うのはいまいち。

...てなところ。Hgが万能だがdepth指定できるsvnもそれが必要なくらい巨大なリポジトリを扱うなら結構強い。どれか一つだけを選ばなくていいのならデータをsvnに、ソースをHgに置き、Hgのサブリポジトリとしてsvnのビルドに必要な部分だけを取り出すのが万能だろう。

それとここで出てないVCSについて私は使ったことがないので判断材料には含まれていないことを断っておく。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした