仕事のプロジェクトではバージョン管理にCVSを使っています。すっかり時代遅れの感が拭えません。
これをGitに置き換えたとして、実際に運用できるレベルになるのか、調べてみました。
なぜ他のVCSでなくGitなのか、という話は保留ということで。
ここで環境A/Bは実際にプロジェクトで使われていた環境です。
\ | 環境A | 環境B | |
ファイルサイズ合計 | 約1.2GB | 約2.8GB | |
ファイル数 | 約39,000 | 約69,000 | |
内(リソースフィアルなどを除いた)ソースファイルの数 | 約21,000 | 約40,000 | |
ソース行数合計 | 約1,060万行 | 約2,000万行 | |
リポジトリサイズ | 約248MB | 約600MB | |
git add(全ファイルの追加) | 27分 | 47分 | |
git commti(上記のaddに対する) | 5分 | 14分 | |
git branch(新しいブランチの作成) | 0秒 | 0秒 | |
git checkout(上記のブランチへの移動) | 10秒 | 27秒 | |
git add(上記のブランチ上で編集後) | 0秒 | 0秒 | |
git status | 11秒 | 27秒 | |
git commit(上記のaddに対する | 7秒 | 36秒 | |
git merge(上記のブランチを元のブランチにマージ) | 9秒 | 17秒 |
- Hardware
- Software
- OS:Microsoft Windows XP Professional SP2
- Cygwin
- 行数はテキスト行数(空行、コメントのみの行を含みます)
- 時間は
time
コマンドで計測しました - 時間は概数です。またあくまで計測した結果で、同時に動いているソフトなどの影響で大きく変化します
- ファイルの変更は、20個ほどのソースファイルの水平タブを空白文字に置き換える、というものです。
実際に動かしてみた感じとしては、環境Aぐらいの規模であれば運用できそうな感じです。環境Bは不可能とはいえないものの、かなり扱いにくくなります。
ただどちらの環境でも、ローカルでの運用や、リモートへのpush/リモートからのpullといった差分のやりとりだけならまだしも、環境一式を取り扱う場合はやはりかなり面倒です。ファイルのコピーだけで30分から一時間かかります(外付けHDDならもっとかかるでしょう)。
ローカルにリポジトリがあるので開発しているサブシステムの中でマメに変更をコミットできるとか、他のサブシステムの開発をしている別のチームと試作のコードをやり取りをする場合も、単にファイルを送るよりも間違いが少ないなど、メリットは大きいと思うのですが、さすがにこのサイズのまま扱うのは不便をともなうことになりそうです。
Gitへの置き換えを考える場合、利用者には集中型から分散型への頭の切り替えを求めることになりますが、加えて運用そのものを見直す必要がありそうです。