Apache Subversion
表示
![]() | |
作者 | CollabNet |
---|---|
開発元 | Apacheソフトウェア財団 |
初版 | 2000年10月20日 |
最新版 |
1.14.1 / 2021年2月10日[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ではファイル毎にリビジョン番号がつけられている。︶ (三)作業ディレクトリ内に、最後にソースリポジトリと同期をとったときのファイルのコピーを持っているため、改編中のファイルの変更部の確認などがソースリポジトリにアクセスする事無く高速に実行できる[要出典]。また、ファイルの差分送信が効率よく行なわれるため、プアなネットワーク環境で利用したときに快適である。 (四)SSHによるソースリポジトリとの通信を標準でサポートしている。インターネット経由で利用してもセキュリティを容易に保つ事ができる。 (五)WebDAVをバックエンドとして使うことができる。つまり、Apache HTTP ServerなどのWebDAVをサポートするHTTPサーバを経由して、WebDAVプロトコルを用いてSubversionサーバとSubversionクライアントが通信するという形態が使える。 一方で CVS における module, branch, tag といった概念が Subversion では全てサブディレクトリとして設計されているので、これらの扱いは CVS とはまったく違う考え方を要する。 (一)CVS では <モジュール名>/<サブディレクトリ名>/.../<ファイル名> だが、Subversion では <サブディレクトリ名>/.../<ファイル名> となる。下記の2つのコマンドはほぼ同等の処理を行う。 ●cvs -d:some_repository checkout -d aSubdir aModule/aDir/aSubdir ●svn co some_repository/aModuleDir/aDir/aSubdir (二)CVS では tag や branch が各ファイル毎に管理されるが、Subversion では﹁別ディレクトリ/ファイルへのコピー﹂で管理される。 ●cvs tag aTagName aSubdir ●svn copy aSubdir aSubdir_aTagName (三)CVS の merge はタグ名が使えるのに対し、Subversion の merge はリビジョン番号や日付などで指定する。 (四)Subversion の svn コマンドは同じ表記でリポジトリの直接操作とローカルマシンのワーキングコピーの操作を実現するので注意を要する。 ●svn copy aSubdir anotherDir はワーキングコピーでの操作で, 次に svn commit を実行することでリポジトリに反映される。 ●svn copy some_repository/.../aSubdir some_repository/.../anotherDir では直接リポジトリが変更される。一般的なリポジトリ構成[編集]
一般に Subversion ではリポジトリの構成を以下のようにするのがよい、と提案されている。 ●<project>/trunk/<subdir>/... ●<project>/branches/<branch>/<subdir>/... ●<project>/tags/<tag>/<subdir>/... この場合 branch/tag を作成するのは以下のように、コピーするだけでよい。svn copy some_repository/aProject/trunk some_repository/aProject/branches/aBranchName
クライアント[編集]
クライアントとしては、コマンドラインツールのsvn
の他、以下のものがある。
●Windows - TortoiseSVN(エクスプローラ拡張)
●macOS - SvnX, Versions なお、LeopardからSubversionは標準インストールされており、Subversionサーバも自動起動している。
●Linux - RabbitVCS
●KDE - KDESvn, KSvn
●GNOME
●クロスプラットフォーム - RapidSVN, pysvn WorkBench, eSvn, SmartSVN, QSvn
●Webアプリ - FlexySvn, Trac, ViewVC
●Java - SVNKit, NetBeans, sventon
●Eclipse - Subclipse, Subversive
●Visual Studio - AnkhSVN, VisualSVN
●IntelliJ IDEA - 標準搭載されている。もしくは、TMate
●Dreamweaver - 標準搭載されている。もしくは、SubWeaver
●Code::Blocks
●Xcode - 2011年3月にリリースされたXcode4より、gitとSubversionが、標準でサポートされた。
使用例[編集]
コマンドラインから使うクライアント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 READMEfoo を bar に移動
$ svn move foo barコミット
$ svn commit
脚注[編集]
- ^ “Apache Subversion News Archives”. 2021年2月12日閲覧。
関連項目[編集]
- CVS
- arch
- バージョン管理システム
- TortoiseSVN
- Subversion クライアントの比較 (英語版ウィキペディア)
外部リンク[編集]
- 公式ウェブサイト
- Subversionによるバージョン管理 - O'Reilly Mediaの本「Version Control with Subversion(svnbook)」をオンラインで読める公式ウェブサイト
- Subversionドキュメントのまとめ - 「Subversionによるバージョン管理」の日本語訳(HTML/PDF/HTML Help形式)