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の使用が一般的です。