2018-05-25 プライバシーポリシーを改訂いたしました。

Subversion(svn)によるソフトウェア開発を始めよう

osdn_logo

Subversion(svn)によるソフトウェア開発を始めよう

OSDNでは、無料で利用できるSubversionリポジトリを提供しています。

公開Subversionリポジトリを作成する 複数人で共有できるSubversionリポジトリを作成する
Subversionアイコン svn-name-banner

Subversionとは?

Subversion(Apache Subversion)は、さまざまなソフトウェアの開発現場において広く使われているソースコード管理システムです。標準のコマンドラインクライアント/プロトコルの名称から「svn」と呼ばれることもあります。Subversionではソースコードやそこに加えられた変更点などの履歴はすべて中央リポジトリに記録され、各開発者はネットワーク経由で中央リポジトリにアクセスすることでソースコードを取り出したり、変更点を記録するという中央集権型のバージョン管理機能を備えています。WindowsやLinux、Mac OS X、各種UNIXなどさまざまな環境で利用でき、GUIで動作するクライアントや、Subversionによるバージョン管理機能を備えた統合開発環境(IDE)も多くあります。

ソースコード管理システム/バージョン管理システムってなに?

バージョン管理というのは、指定した任意の時点における指定したファイルやディレクトリの内容を「リポジトリ」と呼ばれるデータベースに記録しておくことで、変更の内容をあとから容易に参照できるようにすることです。これにより、誰がどの個所を修正したのか、修正前はどのような状態だったのか、というのを容易に把握できるようになり、また修正後のファイルを記録しておいた修正前の状態に復元する、といったことも簡単に行えるようになります。このような処理を行うシステムは、「バージョン管理システム」(Version Control System、VCS)と呼ばれており、またリポジトリに状態を記録することを「コミット」と呼びます。

Subversionの特徴

Subversionは、1つの中央リポジトリに複数の開発者がアクセスするアーキテクチャを採用しています。コミットごとに新しいリビジョン番号が振られるためバージョンの管理が直感的に行えるほか、対応するクライアントが多いというのが特徴です。いっぽう、複数の開発者が1つのリポジトリを共有するため、注意しないと変更点の競合が発生しやすいというデメリットもあります。近年ではGitやMercurialといった分散型の後発ソースコード管理システムにシェアを奪われつつありますが、その歴史から現在でも多くのソフトウェア開発の現場で利用されています。

Subversionでは、「checkout」もしくは「update」コマンドで中央リポジトリからソースコードを取り出し、変更後に「commit」を実行することで変更点を中央リポジトリに送信する、という流れで開発を行います。checkout後に誰かほかの開発者がリポジトリにコミットを行っていた場合、そのままではcommitが実行できないため、再度リポジトリからソースコードを取り出し、手元のコードに修正点を反映させる「merge」という作業が必要になる場合もあります。そのほか、複数の異なるバージョンのソースコードを平行管理するための「branch」という機能や、特定のバージョンに名前をつけて管理する「tag」という機能も用意されています。

Subversion(svn)の基本コマンド

Subversionを利用するには、対応したクライアントが必要です。Windows向けのTortoiseSVNといったGUIのクライアントもありますが、Linux/UNIX環境ではコマンドラインベースのsvnコマンドを利用することも多いです。たとえばsvnコマンドを使ってファイルをcheckoutするには、「svn checkout」、もしくはその省略形の「svn co」コマンドを利用します。

$ svn checkout <チェックアウトするリポジトリのURL>

「svn checkout」コマンドを実行すると、指定したリポジトリからファイルを取り出し、実行したディレクトリにします。また、以前にcheckoutしたファイルを最新のものに更新するには、「svn update」コマンドを利用します。

$ svn update

チェックアウトしたファイルに対し変更を加え、それをリポジトリに保存するには、「svn commit」、もしくはその省略形の「svn ci」コマンドを実行します。

$ svn commit -m <コミットメッセージ>

このとき、コミットメッセージには変更点の概要を説明する文章を指定します。なお、コミットメッセージを省略すると自動的にエディタが立ち上がり、そこでコミットメッセージを入力することになります。

なお、新たにファイルを追加したい場合は「svn add」コマンドを、ファイルを削除したい場合は「svn delete」(もしくは「svn del」「svn remove」「svn rm」)コマンドを使用します。

$ svn add <追加したいファイル名>
$ svn delete <削除したいファイル名>

空のリポジトリにファイルを追加したい場合などは、「svn import」コマンドを使用します。

$ svn <追加したいファイル/ディレクトリ> <リポジトリのURL>

ここでディレクトリを指定した場合、そのディレクトリ内のファイルやディレクトリが再帰的にリポジトリに追加されます。また、ファイルやディレクトリを省略した場合は「.」、つまりカレントディレクトリが追加されたものとして処理が実行されます。

Subversion用リポジトリブラウザ

OSDNでのSubversionサポート

OSDNでは、以下のようなSubversionサポートを提供しています。

  • 個人用開発支援機能「PersonalForge」においてSubversionリポジトリを提供
  • 開発プロジェクトにおいてSubversionリポジトリを提供
  • 無償で利用できるシェルサーバー/Webサーバーでのsvnコマンドサポート

これらの機能は、OSDNへのアカウント登録を行うだけですべて無料で利用できます。作成できるリポジトリ数やサイズの制限などはありません。

Subversionリポジトリを作成

個人向け開発支援機能「PersonalForge」におけるSubversionリポジトリの提供

個人向け開発支援サービス「PersonalForge」では、Subversionの個人リポジトリやファイルアップローダー、Wikiといった機能を提供する「作業部屋」を利用できます。作業部屋は無制限に作成でき、また任意のファイルをアップロードして公開できます。

PersonalForgeではOSDNが独自に開発したレポジトリブラウザが提供されており、任意のブランチのファイル一覧やコミット履歴、ブランチ/タグ一覧などをWebブラウザ上で確認できます。

プロジェクトにおけるSCMサポート

開発プロジェクトにおけるSubversionリポジトリの提供

オープンソースソフトウェア開発に向けた「プロジェクト」機能では、ソースコード管理システムを提供しています。GitおよびSubversion、Mercurial、Bazaar、CVSといったソースコード管理システムが利用可能で、GitおよびSubversion、Mercurialについては独自開発のリポジトリブラウザが提供されています。

そのほかプロジェクト向けにはWikiやファイルリリース(アップローダ)、チケット、ニュース、フォーラム(掲示板)、メーリングリストと行った機能も利用できます。

無償で利用できるシェルサーバー/Webサーバーでのsvnコマンドサポート

OSDNでは、プロジェクトで開発したソフトウェアのテストやWebサイト構築に利用できるシェルサーバーを提供しています。シェルサーバーにはSSHを利用してログインでき、またMySQLデータベースの利用も可能です。シェルサーバーにはgitやsvn、hgといったコマンドがインストールされており、これらを使ってファイルをシェルサーバーにコピーすることが可能です。

Subversion関連ドキュメント

OSDN MagazineではSubversionを利用するための解説記事を用意しています。Subversionの詳しい使い方などはこれらの記事を参考にするとよいでしょう。

公開Subversionリポジトリを作成する プロジェクトを作成する