For faster navigation, this Iframe is preloading the Wikiwand page for Apache Subversion.

Apache Subversion

Subversion
作者 CollabNet
開発元 Apacheソフトウェア財団
初版 2000年10月20日 (23年前) (2000-10-20)
最新版
1.14.3 / 2023年12月28日 (7か月前) (2023-12-28)[1]
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS クロスプラットフォーム
サポート状況 開発中
種別 バージョン管理ソフトウェア
ライセンス Apache License
公式サイト subversion.apache.org
テンプレートを表示

Apache Subversion(アパッチ・サブバージョン; SVN)はプログラムのソースコードなどを管理する集中型バージョン管理システムの一つ。元々は、CollabNetが開発していたが、2009年11月7日にApache Incubatorプロジェクトのひとつとなり、2010年2月17日よりApacheのトッププロジェクトとなった。ライセンスはApache Licenseに準じたものとなっている。

概要

[編集]

歴史的には広く使われているバージョン管理システムの一つにCVSがあった。CVSにはディレクトリの移動の管理やネットワーク対応の点、不可分な更新などの点で難があった。これらCVSの問題点を解決すべく開発されたのがSubversionである。

Subversionは集中型(クライアント・サーバ型)であるが、その後、GitMercurialBazaarなどの分散型のバージョン管理システムが登場するようになった。例えば、Linuxカーネルの管理にはGit、Mozilla Firefoxの管理にはMercurial、MySQLの管理にはBazaarが使われている。

特徴

[編集]

Subversionの使い方はCVSによく似ている。コマンドラインで使用する際の主要なコマンド名はCVSと一致するように作られているため、クライアントはCVSからの移行がきわめて容易である。

  1. ディレクトリの移動や削除をサポートしている。このため、ファイル名やソースツリーの構造がはっきりと決まらないうちからバージョン管理をすることができる。
  2. バージョン番号(リビジョン番号)はソースツリー全体に対して振られるため、原則としては誰かがソースツリーのどこかのファイルを更新する度に番号が増えてゆく。(CVSではファイル毎にリビジョン番号がつけられている。)
  3. 作業ディレクトリ内に、最後にソースリポジトリと同期をとったときのファイルのコピーを持っているため、改編中のファイルの変更部の確認などがソースリポジトリにアクセスする事無く高速に実行できる[要出典]。また、ファイルの差分送信が効率よく行なわれるため、プアなネットワーク環境で利用したときに快適である。
  4. SSHによるソースリポジトリとの通信を標準でサポートしている。インターネット経由で利用してもセキュリティを容易に保つ事ができる。
  5. WebDAVをバックエンドとして使うことができる。つまり、Apache HTTP ServerなどのWebDAVをサポートするHTTPサーバを経由して、WebDAVプロトコルを用いてSubversionサーバとSubversionクライアントが通信するという形態が使える。

一方で CVS における module, branch, tag といった概念が Subversion では全てサブディレクトリとして設計されているので、これらの扱いは CVS とはまったく違う考え方を要する。

  1. CVS では <モジュール名>/<サブディレクトリ名>/.../<ファイル名> だが、Subversion では <サブディレクトリ名>/.../<ファイル名> となる。下記の2つのコマンドはほぼ同等の処理を行う。
    • cvs -d:some_repository checkout -d aSubdir aModule/aDir/aSubdir
    • svn co some_repository/aModuleDir/aDir/aSubdir
  2. CVS では tag や branch が各ファイル毎に管理されるが、Subversion では「別ディレクトリ/ファイルへのコピー」で管理される。
    • cvs tag aTagName aSubdir
    • svn copy aSubdir aSubdir_aTagName
  3. CVS の merge はタグ名が使えるのに対し、Subversion の merge はリビジョン番号や日付などで指定する。
  4. 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の他、以下のものがある。


使用例

[編集]

コマンドラインから使うクライアント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

脚注

[編集]
  1. ^ Apache Subversion News Archives”. 2024年8月16日閲覧。

関連項目

[編集]

外部リンク

[編集]
{{bottomLinkPreText}} {{bottomLinkText}}
Apache Subversion
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?