Subversionは、オープンソースで開発されているバージョン管理システムシステムである。SVNと省略して表記されることもある。
Red Hat Enterprise Linux又はCentOSにSVNをインストールする
# yum install subversion
SubversionクライアントTortoiseSVNをインストールする
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:keywords属性の値を表示する例を示す。
$ svn propget svn:keywords HelloWorld.java
Date Author Rev
propset attribute value path ...
コマンドラインからsvn:keywords属性を設定する例を示す。
$ svn propset svn:keywords "Date Author Rev"
ログメッセージやロックコメントを指定する。
$ svn commit -m "bug fix"
svnコマンドでブランチを作成するには、copy コマンドを使用する。
EclipseのSubversionプラグインでブランチを作成するには、「SVNリポジトリー・エクスプローラー」パースペクティブから作業コピーのフォルダを指定して、右クリックメニューの「ブランチ/タグ...」を選択する。
TortoiseSVNでブランチを作成するには、エクスプローラから作業コピーのフォルダを指定して、右クリックメニューの「TortoiseSVN」-「ブランチ/タグの作成...」を選択する。または、TortoiseSVNリポジトリーブラウザでCtrlキーを押しながら、フォルダを新しい場所にドラッグ&ドロップする。
TortoiseSVNでブランチを作成する手順を示す。
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 ...」のメッセージが表示されてエラーになる場合、新規作成したパッケージと同名のパッケージが既にコミットされていることがある。この場合、以下の手順でパッケージを更新してからコミットする。
「タグ」とは、特定のリビジョンの複製である。タグを作成することにより、リリースしたリビジョンなど、特定のリビジョンに任意の名前を付けることができる。
svnでは、ファイルやディレクトリをリポジトリで管理するために、「リビジョン」と「属性」と呼ばれる情報を持っている。「属性」とはファイルやディレクトリの付加情報であり、属性名と属性値から成っている。
svnプロパティ | 説明 |
---|---|
svn:eol-style | 行末の改行コード |
svn:ignore | ファイルやディレクトリに設定すると、リポジトリで管理しなくなる。svn statusで状態表示されなくなる。 |
svn:mime-type | ファイルのMIMEタイプを指定する。 |
svn:needs-lock | svn:needs-lockが設定されたファイルは読み取り専用になり、編集するためにはロックが必要となる。 |
属性値 | 説明 |
---|---|
native | Subversionが実行されているオペレーティングシステムの本来のEOLマーカを含むようにする。 |
CRLF | ファイルのEOLマーカにCR-LFの並び(Windowsの改行コード)を使う。 |
LF | ファイルのEOLマーカにLF文字(Unixの改行コード)を使う。 |
ファイルに設定すると、ファイルのパーミッションに実行権を付与する。Unixにある作業コピーは実行可能になる。svn:executable属性は属性値を何も定義しない。単に属性名が存在していれば、Subversionによって実行ビットが保存される。
svnコマンドでsvn:executable属性を設定する例を次に示す。
$ svn propset svn:executable ON sample.sh
属性値 | 説明 |
---|---|
Date | ファイルがリポジトリ中で修正された最後の時刻 |
Revision | ファイルがリポジトリで変更された最後のリビジョン |
Author | リポジトリ中のこのファイルを最後に変更したユーザー |
HeadURL | リポジトリ中のファイルの最後のバージョンに対する完全なURL |
Id | ファイル名、リビジョン、最終更新日時及び最終更新ユーザー |
コミットするファイルの中に「
$
keyword
$
」という文字列が存在した場合、キーワードに対応した値に置換される。たとえば、「
$Id$
」というキーワードは「
$Id: HelloWorld.java 429 1998-04-29 12:30:50Z m.horiuchi $
」という文字列に置き換えられる。
コマンドラインからsvnプロパティを設定する場合、svnコマンドにpropsetサブコマンドを指定して実行する。
TortoiseSVNでsvnプロパティを設定するには、ファイルの右クリックメニューから[TortoiseSVN] - [プロパティ]を選択する。
EclipseのSubversionプラグインからsvnプロパティを設定する場合、「パッケージ・エクスプローラー」パースペクティブでファイルを右クリックして、右クリックメニューの[チーム] - [プロパティの設定...]を選択する。「プロパティーの設定」ウィンドウが表示されるので、「プロパティ名」コンボボックスからsvnプロパティを選択する。