Subversion は、非常に優れた集中型バージョン管理システムです。これは成熟しており、Trac などの他のツールによって十分にサポートされています。その「スナップショットごとに 1 つのバージョン」は際立っており、「ブランチ」は単に「軽いコピー」にすぎません。本当に、より「脆弱な」セマンティクス (ファイルごとのバージョン番号や独自の特異性など) を伴う従来のバージョン管理のコンテキストでは、Subversion は際立っています。(何年も使っています。)
とは言っても、私は Mercurial に移行しています。(私は Git を検討しますが、現在 Windows では Mercurial の方がはるかに成熟しています。) Tortoise-Hg は Tortoise-SVN ほど成熟していません。ただし、Mercurial と Git はどちらも BUILT TO MERGE です。そして、これがバージョン管理システムの根本的な問題です。
Mercurial では、すべてのリポジトリにすべてが含まれています。マージは簡単です。リポジトリはそれ自体が「サンドボックス」であるため、「トランク」や「ブランチ」の「千里眼」を持っている必要はなく、その他のブランチ前の計画を立てる必要はありません。要するに、分散リポジトリは、開発者がコマンド構造 (「最終的に承認されたトランク」ブランチに移動) に集中している場合でも、開発者のチームが機能する方法です。
概要: Subversion は優れたモデルですが、非常に集中化されています。成熟したツールで成熟しており、他のツール (Trac など) との統合も成熟しています。Mercurial (および Git) はより優れたモデルですが、Subversion と同じ「リポジトリごとの単一バージョンのスナップショット」を提供します。ツール (Tortoise-Hg など) は成熟度が低く (Trac との統合はより手間がかかります)、Mercurial を使用する場合 (同期された分散リポジトリなど) は少し異なる考え方になるため、いくつかの利点がありますが、実際には問題を別の方法で考えてください (Subversion の場合とは異なります)。
私は毎日両方を使用しています。彼らは両方とも素晴らしいです。Mercurial と Trac の統合がより成熟した方法で実現したら、完全に Mercurial に移行します。(成熟度の低い Tortoise-Hg は Tortoise-Svn ほど良くはありませんが、私はそれと一緒に暮らすことができます。)
Mercurial のみへの完全な移行には、しばらく時間がかかる場合があります (Trac がネイティブの Mercurial 統合を提供するため、1 年または 2 年以上かかります)。Mercurial と Subversion の間のインポート/エクスポートはひどいものではありません。既存のコード ベースでは両方を使用します。中央の「トランク」は Subversion であり、ローカルの変更は Mercurial で行われ、最終的に Subversion にチェックインされます。できます。
他のツールと組み合わせる場合は、Subversion および Mercurial とのインターフェイスを確認してください。すべてが等しい場合は、Mercurial に進みます。それ以外の場合は、Subversion で問題が発生することはありません (特に Trac によるサポートのために Subversion を使用しています)。その上で Mercurial を使用しても問題ありません (使用しています)。
最後に、質問をどのように組み立てたかという文脈で:
では、SVN よりも Mercurial/Git の方が多くの利点があるにもかかわらず、新しいプロジェクトで Mercurial よりも SVN を選択するのはいつ、どのような理由でしょうか?
私は Mercurial よりも Svn を選びます:
- 他のツール (Trac など) との統合はより成熟しており、それらの他のツールを使用しています。
- ユーティリティ インターフェイス (Tortoise-Svn など) は、Mercurial フロントエンド (Tortoise-Hg など) よりもはるかに成熟しています。
- Subversion は概念的には非常に単純なモデル (例: 単一バージョンのスナップショット) であり、中央リポジトリは人々が歴史的にバージョン管理についてどのように考えてきたかです (分散 Git/Mercurial モデルには異なる考え方が必要です)。
- 「トランク」と「ブランチ」を計画する堅実なプロセスがあり、これらの面倒なブランチ間のマージを支援するための重要なツール サポートは必要ありません。