Subversion
Total: 86567, Today: 5, Yesterday: 6
Posted by aterai at
Last-modified:
Summary
このページは、バージョン管理システムのSubversionをWindows環境で使用する場合の手順などをサンプルを用いて解説しています。
Subversionとは
SubversionはCVSの利用形態を引き継ぎつつ、問題点を克服した新しいバージョン管理システムです。
- リポジトリにリビジョンがつく
- コミットがアトミック
- ファイルの移動
- ディレクトリの作成・削除
- ネットワーク対応
- 言語バインディング
上記の項目の用語や意味は、引用元のコラムや、トランクやブランチなどのバージョン管理用語の意味が参考になります。
このメモでの注意点
- プロジェクトの名前を表すものとして、
hogeなどを使用しています。ただし、xyzzyはエディタ*1です。
Apache2など導入しない場合、コマンドラインでhttp://localhost/となっている部分をfile://localhost/c:/などに置き換えて実行してください。file:で始まるURIのドライブ名の指定方法は以下を参考にしてください。
file:///c:/svn/hoge file://localhost/c:/svn/hoge file://c:/svn/hoge file:/c:/svn/hoge file:///C|/svn/hoge
- 標準的な
Windows環境の場合、SubversionのconfigファイルはC:\Documents and Settings\ユーザ名\Application Data\Subversion以下にあります。- この
Subversionフォルダが存在しない場合、なにかコマンドを実行すれば新規生成されるようです。例えば、Subversionをインストールした後で、コマンドプロンプトなどからsvn helpを実行すれば、Subversionフォルダが生成され、その下に、config、servers、README.txtなどのファイルも作成されます。
- この
使い方
コマンドプロンプトなどから使う場合は、CVSとほとんど同じ感覚で使用することができます。
mkdir c:\svn svnadmin create c:\svn\hoge svn mkdir file://localhost/c:/svn/hoge/trunk -m "trunk作成" svn import e:\hogehoge file://localhost/c:/svn/hoge/trunk -m "コメント"
以下のように入力すると、簡単なヘルプが表示されます。
svnのサブコマンド一覧など > svn help コミット(サブコマンド)のヘルプ > svn help commit svnadminのサブコマンド一覧など > svnadmin help
リポジトリ
どのようなディレクトリ構造のリポジトリにするかは、Subversion自身のリポジトリが参考になります。通常は以下のような3つのディレクトリを作っておくのがお勧めのようです。
trunktagsbranches
リポジトリの作成
以下、例としてプロジェクト名がHogeのリポジトリを作ってみます。
まず、SVNParentPathとしてc:\svn(これはただのディレクトリ)を作成し、この下にhogeプロジェクトなどのリポジトリを作成、初期化します。
mkdir c:\svn svnadmin create c:\svn\hoge
hogeリポジトリの下に、trunk、tagsなどのディレクトリを作成します。
svn mkdir file://localhost/c:/svn/hoge/trunk -m "trunkの作成" svn mkdir file://localhost/c:/svn/hoge/tags -m "tagsの作成" svn mkdir file://localhost/c:/svn/hoge/branches -m "branchesの作成"
例えばe:\hoge 以下に置かれていたソースディレクトリなどを、リポジトリにインポートします。
mkdir e:\hoge\src svn import e:\hoge file://localhost/c:/svn/hoge/trunk -m "srcをimport"
生成したリポジトリのtrunk以下の内容を、任意のディレクトリ(c:\dev\hoge)以下にチェックアウトします。ディレクトリは相対パスで指定可、存在しない場合は自動生成、省略した場合は指定したリポジトリの末尾(以下の場合trunk)のディレクトリが生成されます。
svn co file://localhost/c:/svn/hoge/trunk c:\dev\hoge
チェックアウトしたディレクトリ以下のファイルを修正してコミット(チェックイン)するなどして、開発を進めていきます。
各ディレクトリの役割
Apache2を導入して(Apache2(Windows版)でネットワーク対応)、作成したリポジトリをブラウザで見てみると、以下のようになります。
赤線を引いたところは、Apacheのhttpd.confファイルで設定したSVNParentPath(c:\svn)のエイリアスです。なんでもいいのですが、svn、repos、svnreposなどが多いようです。
青線の部分はプロジェクト名をディレクトリに、またその下に trunk、tags、branchesを作っています。このサンプルプロジェクトでは、それぞれ以下のようになっています。
| ディレクトリ | Hogeプロジェクトでの内容 |
trunk | srcディレクトリ、build.xml、bulid.propertiesなどが入っています。 |
tags | hoge-0.1.0、hoge-0.5.1といったディレクトリが入っています。これらは、リリースしたリビジョンでのtrunkディレクトリのコピーになっています。 |
branches | ブランチをいれますが、小さいプロジェクトなので今のところ空です。 |
タグ付け
例えばバージョン0.8.0をリリースした場合、以下の要領でタグ付けをしておきます(コマンドプロンプトで入力する場合は、^は使用せず、一行で入力してください)。
svn copy http://localhost/svn/hoge/trunk ^
http://localhost/svn/hoge/tags/hoge-0.8.0 ^
-m "hoge-0.8.0としてリリース"
Subversionでのcopyは、ファイルそのものをコピーしている訳ではないので、ディスク容量を浪費しません。
リポジトリのバックアップ
svnadmin dumpで、データベースにあるリポジトリをダンプファイルとしてバックアップすることができます。
svnadmin dump c:\svn\hoge > c:\temp\hoge.dump
逆にダンプファイルをデータベースにロードするには、svnadmin loadを使用します。
svnadmin create c:\svn\hoge2 svnadmin load c:\svn\hoge2 < c:\temp\hoge.dump
Subversionのバージョンアップでリポジトリスキーマが更新された場合、リポジトリのアップグレードが必要になる*2ことがあります。これらの場合、まず古いバージョンの"svnadmin.exe"を使ってダンプファイルを作成し、新しい"svnadmin.exe"で、リポジトリの新規作成、ダンプファイルのロードを行います。古いバージョンのWindows用バイナリなどは、Windows Archiveにあります。
svnadmin dump c:\svn\hoge > c:\temp\hoge.dump ren c:\svn\hoge hoge_old (svnadminを新しいものに変更) svnadmin create c:\svn\hoge svnadmin load c:\svn\hoge < c:\temp\hoge.dump
ログエディタの設定
ログエディタの設定方法についてメモしています。
無視パターン
bakファイル(*.bak、*.BAK)などをステータス表示(svn status)などで無視するよう設定します。
ログの修正
コミットログの誤字脱字などを修正します。上書きされてしまうので十分注意して実行してください。
ネットワーク対応
ネットワーク越しにSubversionを使えるようにします。
- Apache2(Windows版)でネットワーク対応
Apache HTTP Serverを導入してSubversionをネットワーク越しで使用できるようにします。うまくいかない場合は、C:\Program Files\Subversion\W32notes.txtなどを参照してください。
サードパーティー製ツール
- WinMerge
- コマンドライン版の
diffの代わりに、GUIで差分を表示できるWinMergeを使用してみます。
- コマンドライン版の
- eSvn
Subversion用のGUIクライアントです。
Reference
Subversion関係のリンクです。
