|
| |
| 作者 | CollabNet |
|---|---|
| 開発元 | Apacheソフトウェア財団 |
| 初版 | 2000年10月20日 |
| 最新版 |
1.14.5
/ 2024年12月8日[1] |
| リポジトリ | |
| プログラミング 言語 | C |
| 対応OS | クロスプラットフォーム |
| サポート状況 | 開発中 |
| 種別 | バージョン管理ソフトウェア |
| ライセンス | Apache License |
| 公式サイト |
subversion |
Apache Subversion(アパッチ・サブバージョン; SVN)はプログラムのソースコードなどを管理する集中型バージョン管理システムの一つ。元々は、CollabNetが開発していたが、2009年11月7日にApache Incubatorプロジェクトのひとつとなり、2010年2月17日よりApacheのトッププロジェクトとなった。ライセンスはApache Licenseに準じたものとなっている。
歴史的には広く使われているバージョン管理システムの一つにCVSがあった。CVSにはディレクトリの移動の管理やネットワーク対応の点、不可分な更新などの点で難があった。これらCVSの問題点を解決すべく開発されたのがSubversionである。
Subversionは集中型(クライアント・サーバ型)であるが、その後、GitやMercurialやBazaarなどの分散型のバージョン管理システムが登場するようになった。例えば、Linuxカーネルの管理にはGit、Mozilla Firefoxの管理にはMercurial、MySQLの管理にはBazaarが使われている。
Subversionの使い方はCVSによく似ている。コマンドラインで使用する際の主要なコマンド名はCVSと一致するように作られているため、クライアントはCVSからの移行がきわめて容易である。
一方で CVS における module, branch, tag といった概念が Subversion では全てサブディレクトリとして設計されているので、これらの扱いは CVS とはまったく違う考え方を要する。
一般に Subversion ではリポジトリの構成を以下のようにするのがよい、と提案されている。
この場合 branch/tag を作成するのは以下のように、コピーするだけでよい。
svn copy some_repository/aProject/trunk some_repository/aProject/branches/aBranchName
クライアントとしては、コマンドラインツールのsvnの他、以下のものがある。
コマンドラインから使うクライアントsvnの使用例
インポート
$ svn import project_name svn+ssh://dev.example.com/repos/svn/trunk
チェックアウト
$ svn checkout http://svn.collab.net/repos/svn/trunk
作業コピーの更新
$ svn update
作業コピーの状態の表示
$ svn status
変更点の差分を表示
$ svn diff
ファイル README への変更を破棄して元に戻す
$ svn revert README
foo を bar に移動
$ svn move foo bar
コミット
$ svn commit
未登録
IPFS未登録
📡 0ピア
N=1
CRITICAL
PQS B63