gitとsubversionについて比較の記事を見つけたので、それの拙訳です。
訳は適当なので、元記事のリンクもつけるので正確なのはそちらへどうぞ。
「Subversion vs. Git: Myths and Facts」より
gitとsubversionにまつわる神話(都市伝説)と真実について、まとめられています。
[神話: 真偽]という形でそれらを以下に訳してみます。
1. Gitリポジトリは同じsubversionリポジトリに比べてデータ量はかなり小さい: ウソ
Git repositories are significantly smaller than equivalent Subversion ones
2. subversionのブランチのコストが高い: ウソ
Branches are expensive in Subversion
3. subversionで2つのブランチをマージするには、リビジョンの範囲を手動で設定しなければいけない: ウソ、昔の話である
It is required to manually specify the range of revisions when you merge two branches in Subversion
4. subversionのワーキングコピーでは、フォルダごとに.svnディレクトリがある: ウソ、昔の話である
There is an auxiliary .svn directory in each folder of Subversion working copy
5. subversionを使っている人などもはやいない: ウソ
Nobody uses Subversion anymore
6. 分散型バージョン管理システムは、subversionのような中央型のものより、本質的に優れている: ウソ。 あくまで部分的
Distributed version control systems are inherently superior to centralized ones such as Subversion
7. Gitは大規模プロジェクトにも良く対応できる: ウソ。 いくつかのより小さいリポジトリに分割することで対応する
Git scales well for larger projects
8. Gitは大人数チームにも良く対応できる: ワークフローに一定の制限がある
Git scales well for larger teams
9. Subversionではマージ作業が常に辛い: 昔ながらの問題がある
Merge operation is always painful in Subversion
10. Gitは実装上の複雑さや制限が漏れているし、コマンドラインの形式がわかりづらい: 本当。 分散型VCSと、抽象化とコマンドの簡易化は相容れないため。
Git has leaky abstraction and crazy command line syntax
11. Gitの履歴は安全ではない: 本当
Git history is not safe
12. Gitはリポジトリの一部へのリードアクセス権限を提供できない: 本当
Git does not provide granular read access control
13. Gitはバイナリファイルと相性は良くない: 本当
Git is not friendly to binary files
svnに勝ったのはgitではなく、GitHub
Git didn’t beat SVN, GitHub did. という記事を見つけました。gitだけではsubversionのシェアをひっくり返すことはなかっただろうと、CTOの意見がまとめられています。
Git自体はsubversionの完全な上位互換ではないので、この記事はしっくりきました。
Gitが複数人数の開発、特に開発者の所属する組織や所在がばらばらのケースに向いていることと、そのケースを効率化するGitHubは、オープンソースプロジェクトでは特に有効だったように思えます。
subversionからgitに切り替えるなら、GitHubのようなものも必要?
なんのために移行するかにもよるでしょうが、GitHubのようなものがないと、gitのメリットをいかしきれない可能性が高いです。開発フローも見直す必要があるでしょう。
移行の理由として
- 現状の開発体制の問題を解決したい
- 採用時にgitを使ってると言いたい
- オープンソースプロジェクトに関われる人材を育成したい
- CIなどの連携ツールを使えるようにしたい
などがあると思います。GitやGitHubの利用に切り替えることで、これらが達成できるかは見極めた方が良さそうです。
subversionからgitへの移行
移行そのものは、ツールや手法はすでにだいぶあります。主なものは下記にまとめています。
GitHubとそのalternative
費用や社内ネットワークにとどめるなどの理由で、GitHubをそのまま使うことでできないかもしれません。(後者の場場合は、Github Enterpriseでいけるかもしれません)
そんなときは、「Github alternative」でググると、求めるものが見つかるかもしれません。