Subversionとは? svnコマンドの使い方

Subversionは、オープンソースで開発されているバージョン管理システムシステムである。SVNと省略して表記されることもある。

インストール

Red Hat Enterprise Linux又はCentOSにSVNをインストールする

# yum install subversion

SubversionクライアントTortoiseSVNをインストールする

  1. TortoiseSVNプロジェクトのサイトをウェブブラウザで開く。
  2. ダウンロードのページからインストーラと日本語(ja)の言語パック(Language Pack)をダウンロードする。
  3. インストーラを実行して、TortoiseSVNをインストールする。
  4. 言語パックのインストーラを実行して、言語パックをインストールする。

svnコマンドの使い方

svn subcommand [option...] [argument...]

subcommandには、次に示すsvnのサブコマンドを指定する。

copy src dst
ファイルをコピーする。
export [-r rev] url[@pegrev] [path]
export [-r rev] path1[@pegrev] [path2]

urlで指定されたリポジトリから、Subversionの管理用ファイルを含まないディレクトリツリーをpathにエクスポートする。pathを省略した場合は、ローカルのディレクトリ名としてurlのベース名が使われる。

help [subcommand]

指定したサブコマンドに関するヘルプを表示する。サブコマンドを省略した場合は、svnコマンドの使用方法を表示する。

info [target[@rev]...]

作業コピーのパスやURLの情報を表示する。

propget attribute [target[@rev]...]
svn属性の値を表示する。

コマンドラインからsvn:keywords属性の値を表示する例を示す。

$ svn propget svn:keywords HelloWorld.java
Date Author Rev
propset attribute value path ...
svn属性の値を設定する。

コマンドラインからsvn:keywords属性を設定する例を示す。

$ svn propset svn:keywords "Date Author Rev"

svnコマンドオプション

-m message
--message message

ログメッセージやロックコメントを指定する。

$ svn commit -m "bug fix"

ブランチ作成

svnコマンドでブランチを作成するには、copy コマンドを使用する。

EclipseのSubversionプラグインでブランチを作成するには、「SVNリポジトリー・エクスプローラー」パースペクティブから作業コピーのフォルダを指定して、右クリックメニューの「ブランチ/タグ...」を選択する。

TortoiseSVN

TortoiseSVNでブランチを作成するには、エクスプローラから作業コピーのフォルダを指定して、右クリックメニューの「TortoiseSVN」-「ブランチ/タグの作成...」を選択する。または、TortoiseSVNリポジトリーブラウザでCtrlキーを押しながら、フォルダを新しい場所にドラッグ&ドロップする。

TortoiseSVNでブランチを作成する手順を示す。

  1. コピー元(たいていはtrunk)をチェックアウトして、作業コピーを作る。
  2. コピー元の作業コピーフォルダを左クリックする。
  3. 作業コピーフォルダを右クリックして、右クリックメニューから [TortoiseSVN] - [ブランチ/タグの作成] をクリックする。
  4. 「ブランチ/タグの作成」ダイアログが表示されるので、必要な情報を入力する。
    宛先パス
    作成するブランチのパスを指定する。
    例) /project/branches/branch1
    ログメッセージ
    ブランチを作成する目的や理由を入力する。(任意)
    リポジトリ上でコピーを作成するコピー元
    コピー元のリビジョンなどを選択する。
    これらの外部参照に対してリビジョンを明示的に指定する
    svn:externalsプロパティで別のプロジェクトを外部参照している場合は、外部項目の一覧が表示される。これらは最新のリビジョンを参照するため、ブランチ作成時のリビジョンを固定で参照するようにする場合は、チェックを入れる。
  5. 「認証」ダイアログが表示されたら、ユーザー名とパスワードを入力して、OKボタンをクリックする。
  6. OKボタンをクリックする。

変更の取り消し

TortoiseSVNで変更を取り消す場合、ファイルを選択し、右クリックメニューから[TortoiseSVN] - [変更の取り消し]をクリックする。

競合が生じているファイルの変更を取り消した場合、競合は解決される。

競合の解決

ファイルが競合した場合、Subversionは次のファイルを作成する。

filename .r OLDREV

filename .r NEWREV

バイナリファイルが競合した場合、Subversionはそのファイルをマージしない。つまり、ローカルファイルには変更が加えられない。

自分の変更を取り消して、リポジトリの最新(HEADリビジョン)にしたい場合は「変更の取り消し」コマンドを実行する。

ファイルをロックする

テキストファイルは編集が競合してもマージできるが、画像やMicrosoft Excelのブックなどのファイルはマージできない。このようなファイルを編集する場合、競合が起きないようにファイルをロックすることができる。ロックしたファイルは、他のユーザが変更をコミットできなくなる。

svnコマンドでファイルをロックするには、lockサブコマンドを指定する。

svn lock target ...

TortoiseSVNでファイルをロックするには、ファイルの右クリックメニューから[TortoiseSVN] - [ロックを取得]を選択する。

Subversionでコミットした際に「svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for ...」のメッセージが表示されてエラーになる場合、新規作成したパッケージと同名のパッケージが既にコミットされていることがある。この場合、以下の手順でパッケージを更新してからコミットする。

  1. パッケージ下のファイルをエクスポートして退避させる。
  2. パッケージを削除する。
  3. svnリポジトリーと同期する。
  4. 更新する。
  5. エクスポートしたファイルをパッケージ下にインポートする。
  6. コミットする。

タグ

「タグ」とは、特定のリビジョンの複製である。タグを作成することにより、リリースしたリビジョンなど、特定のリビジョンに任意の名前を付けることができる。

svnプロパティ

svnでは、ファイルやディレクトリをリポジトリで管理するために、「リビジョン」と「属性」と呼ばれる情報を持っている。「属性」とはファイルやディレクトリの付加情報であり、属性名と属性値から成っている。

svnプロパティ
svnプロパティ 説明
svn:eol-style 行末の改行コード
svn:ignoreファイルやディレクトリに設定すると、リポジトリで管理しなくなる。svn statusで状態表示されなくなる。
svn:mime-type ファイルのMIMEタイプを指定する。
svn:needs-lock svn:needs-lockが設定されたファイルは読み取り専用になり、編集するためにはロックが必要となる。
svn:eol-style
行末の改行コードを指定する。
svn:eol-styleの属性値
属性値 説明
native Subversionが実行されているオペレーティングシステムの本来のEOLマーカを含むようにする。
CRLF ファイルのEOLマーカにCR-LFの並び(Windowsの改行コード)を使う。
LF ファイルのEOLマーカにLF文字(Unixの改行コード)を使う。
svn:executable

ファイルに設定すると、ファイルのパーミッションに実行権を付与する。Unixにある作業コピーは実行可能になる。svn:executable属性は属性値を何も定義しない。単に属性名が存在していれば、Subversionによって実行ビットが保存される。

svnコマンドでsvn:executable属性を設定する例を次に示す。

$ svn propset svn:executable ON sample.sh
svn:keywords
置換するキーワードを指定する。キーワードを複数指定する場合は、キーワードを空白で区切って指定する。指定できるキーワードを表に示す。
svn:keywordsの属性値
属性値 説明
Date ファイルがリポジトリ中で修正された最後の時刻
Revision ファイルがリポジトリで変更された最後のリビジョン
Author リポジトリ中のこのファイルを最後に変更したユーザー
HeadURL リポジトリ中のファイルの最後のバージョンに対する完全なURL
Id ファイル名、リビジョン、最終更新日時及び最終更新ユーザー

コミットするファイルの中に「 $ keyword $ 」という文字列が存在した場合、キーワードに対応した値に置換される。たとえば、「 $Id$ 」というキーワードは「 $Id: HelloWorld.java 429 1998-04-29 12:30:50Z m.horiuchi $ 」という文字列に置き換えられる。

svnプロパティを設定する

コマンドラインからsvnプロパティを設定する場合、svnコマンドにpropsetサブコマンドを指定して実行する。

TortoiseSVNでsvnプロパティを設定するには、ファイルの右クリックメニューから[TortoiseSVN] - [プロパティ]を選択する。

EclipseのSubversionプラグインからsvnプロパティを設定する場合、「パッケージ・エクスプローラー」パースペクティブでファイルを右クリックして、右クリックメニューの[チーム] - [プロパティの設定...]を選択する。「プロパティーの設定」ウィンドウが表示されるので、「プロパティ名」コンボボックスからsvnプロパティを選択する。