Subversion (SVN)

作成日:
更新日:
SVN version-control CLI

Subversion(SVN)は、集中型バージョン管理システムです。Gitと異なり、中央リポジトリを中心とした管理方式を採用しています。

Subversionとは

Subversionは、Apache Software Foundationが開発・管理するオープンソースのバージョン管理システムです。集中型のアーキテクチャを採用しており、すべての変更履歴が中央リポジトリに保存されます。

Gitとの主な違い

項目Subversion (SVN)Git
アーキテクチャ集中型分散型
リポジトリ中央リポジトリのみローカルとリモートの両方
オフライン作業制限あり完全対応
ブランチ・マージ比較的複雑高速で柔軟
学習曲線比較的緩やかやや急

インストール

macOS

macOSには標準でSubversionが含まれていない場合が多いため、Homebrewでインストールするのが一般的です:

brew install subversion
svn --version

その他のOS

  • Linux: パッケージマネージャーでインストール(例: apt install subversion
  • Windows: Apache Subversion公式サイトからインストーラーをダウンロード

基本的な使い方

リポジトリのチェックアウト

# リポジトリをチェックアウト
svn checkout https://example.com/svn/repo/trunk my-project
# または短縮形
svn co https://example.com/svn/repo/trunk my-project

変更の確認

# 変更されたファイルの確認
svn status

# 差分の表示
svn diff

# 特定ファイルの差分
svn diff filename.txt

変更のコミット

# 変更をステージング(Subversionでは自動)
svn add newfile.txt    # 新規ファイルを追加
svn delete oldfile.txt # ファイルを削除

# コミット
svn commit -m "コミットメッセージ"
# または短縮形
svn ci -m "コミットメッセージ"

更新

# リポジトリから最新の変更を取得
svn update
# または短縮形
svn up

ログの確認

# コミット履歴の確認
svn log

# 特定ファイルの履歴
svn log filename.txt

# 簡潔な表示
svn log --limit 10

GUIクライアント

macOS

公式が提供するMac用のGUIツールは存在しませんが、以下のサードパーティ製ツールが利用できます:

  • SmartSVN: クロスプラットフォーム対応(商用版・無料版あり)
  • Cornerstone: macOS専用(有料・評価版あり)

Windows

  • TortoiseSVN: 公式が推奨するWindows用GUIクライアント(無料)

VS Code拡張機能

VS Code上でSubversionを操作できる拡張機能が利用可能です:

  • 拡張機能名: vscode-svn
  • 機能: コミット・更新・差分表示などをVS Code上で操作可能

よく使うコマンド

# リポジトリ情報の確認
svn info

# リポジトリURLの変更
svn switch https://example.com/svn/repo/branches/feature

# ブランチの作成
svn copy https://example.com/svn/repo/trunk \
         https://example.com/svn/repo/branches/feature \
         -m "Create feature branch"

# ブランチのマージ
svn merge https://example.com/svn/repo/branches/feature

# 競合の解決
svn resolve --accept theirs filename.txt  # リモート版を採用
svn resolve --accept mine filename.txt    # ローカル版を採用

使用場面

Subversionは以下のような場面で使用されます:

  • 既存プロジェクトの保守: 既にSubversionを使用しているプロジェクト
  • 集中管理が必要な場合: すべての変更を中央で管理したい場合
  • シンプルなワークフロー: 分散型の複雑さを避けたい場合

ただし、新規プロジェクトではGitの使用が一般的です。

関連トピック

  • Git - 分散型バージョン管理システム
  • Homebrew - macOSでのパッケージ管理