会社のバージョン管理ツールをSubversonからGitへと緩やかに移行中です。
会社から求められていたのは、
- 今までの歴史はすべて引き継ぐ
- Git移行後もSubversionと同期を取ること(徐々にGitに慣れてもらうため)
の2つでした。
ツールの選定
SubversionからGitへの変換ツールはいろいろありますが、以下の3つについて調査しました。
git-svn
SubversionからGitへ移行するツールはgit-svnが有名ですが、git-svnは
- 巨大なリポジトリの移行が大変
- 基本的に片方向の変換
などの問題がありました。
git-as-svn
SubversionとGitを同期するためのツールです。
同期が取れるという点で導入を考えたのですが、What is lacking?の項目にある通り、Subversionのひとつのブランチしか同期することができません。
SubGit
そんな中見つけたのがSubGitです。
SubversionからGitへの変換はフリーで利用可能。
SubversionとGitの同期はライセンスが必要です。
30日の試用版で問題がなかったので会社にライセンスを購入してもらいました。
SubGitは
- SubversionとGitの同期が可能
- Gitへの変換が高速
など、必要な条件を満たしていました。
SubGitインストール方法
こちらは長くなるので別の記事にまとめました
git-svnとSubGitの比較
使い分け
- git-svn: メインはSubverion。Gitを使いたいユーザがローカルのみでGitを使用を想定。
- SubGit: メインはGit。SubversionからGitへ移行するときに使う。またSubversonとGitの同期も取れるので、段階的にGitに移行することもできる。
速度比較
リビジョンが1500ほどあるリポジトリをsvn-gitとSubGitでGitに変換する処理の時間を比較しました
- svn-git: 約2時間
- SubGit: 約3分
SubGitものすごく早いです。桁違いです。これならSubversionリポジトリをGitに移行するのも簡単です。
まとめ
- SubversionからGitへ移行するならSubGitを使うべき!
git-svnを使って変換エラーや変換時間の長さと格闘している方にぜひ使ってほしいです。