-
keywords: [Subversion, Windows]
description: バージョン管理システムのSubversionをWindows環境で使用する場合の手順などをサンプルを用いて解説しています。
author: aterai
pubdate: 2003-09-25
-
Posted by
aterai at 2003-09-25
Subversion
概要
このページは、バージョン管理システムのSubversion
をWindows
環境で使用する場合の手順などをサンプルを用いて解説しています。
Subversionとは
Subversion
はCVS
の利用形態を引き継ぎつつ、問題点を克服した新しいバージョン管理システムです。
概要
このページは、バージョン管理システムのSubversionをWindows環境で使用する場合の手順などをサンプルを用いて解説しています。
- リポジトリにリビジョンがつく
- コミットがアトミック
- ファイルの移動
- ディレクトリの作成・削除
- ネットワーク対応
- 言語バインディング
Subversionとは
SubversionはCVSの利用形態を引き継ぎつつ、問題点を克服した新しいバージョン管理システムです。
- リポジトリにリビジョンがつく
- コミットがアトミック
- ファイルの移動
- ディレクトリの作成・削除
- ネットワーク対応
- 言語バインディング
上記の項目の用語や意味は、引用元のコラムや、トランクやブランチなどのバージョン管理用語の意味が参考になります。
このメモでの注意点
- プロジェクトの名前を表すものとして、"hoge"、"gachk"などを使用しています。ただし、"xyzzy"はエディタ*1です。
このメモでの注意点
- プロジェクトの名前を表すものとして、
hoge
などを使用しています。ただし、xyzzy
はエディタ*2です。
- Apache2など導入しない場合、コマンドラインで http://localhost/ となっている部分を file://localhost/c:/ などに置き換えて実行してください。file:で始まるURIのドライブ名はどう指定するのが正しいかに注意が必要です。
-
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などのファイルも作成されます。
- 標準的な
Windows
環境の場合、Subversion
のconfig
ファイルはC:\Documents and Settings\ユーザ名\Application Data\Subversion
以下にあります。
- この
Subversion
フォルダが存在しない場合、なにかコマンドを実行すれば新規生成されるようです。例えば、Subversion
をインストールした後で、コマンドプロンプトなどからsvn help
を実行すれば、Subversion
フォルダが生成され、その下に、config
、servers
、README.txt
などのファイルも作成されます。
使い方
コマンドプロンプトなどから使う場合は、CVSとほとんど同じ感覚で使用することができます。
使い方
コマンドプロンプトなどから使う場合は、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つのディレクトリを作っておくのがお勧めのようです。
リポジトリ
どのようなディレクトリ構造のリポジトリにするかは、Subversion自身のリポジトリが参考になります。通常は以下のような3
つのディレクトリを作っておくのがお勧めのようです。
リポジトリの作成
以下、例としてプロジェクト名が"GaChk"のリポジトリを作ってみます。
まず、SVNParentPathとしてc:\svn (これはただのディレクトリ)を作成し、この下に"gachk"プロジェクトなどのリポジトリを作成、初期化します。
リポジトリの作成
以下、例としてプロジェクト名がHoge
のリポジトリを作ってみます。
まず、SVNParentPath
としてc:\svn
(これはただのディレクトリ)を作成し、この下にhoge
プロジェクトなどのリポジトリを作成、初期化します。
mkdir c:\svn
svnadmin create c:\svn\gachk
svnadmin create c:\svn\hoge
"gachk"リポジトリの下に、"trunk"、"tags"などのディレクトリを作成します。
svn mkdir file://localhost/c:/svn/gachk/trunk -m "trunkの作成"
svn mkdir file://localhost/c:/svn/gachk/tags -m "tagsの作成"
svn mkdir file://localhost/c:/svn/gachk/branches -m "branchesの作成"
hoge
リポジトリの下に、trunk
、tags
などのディレクトリを作成します。
e:\gachk 以下に置かれたソースディレクトリなどを、リポジトリにインポートします。
mkdir e:\gachk\src
svn import e:\gachk file://localhost/c:/svn/gachk/trunk -m "srcをimport"
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の作成"
生成したリポジトリのtrunk以下の内容を、任意のディレクトリ(c:\dev\gachk)以下にチェックアウトします。ディレクトリは相対パスで指定可、存在しない場合は自動生成、省略した場合は指定したリポジトリの末尾(以下の場合trunk)のディレクトリが生成されます。
例えばe:\hoge 以下に置かれていたソースディレクトリなどを、リポジトリにインポートします。
svn co file://localhost/c:/svn/gachk/trunk c:\dev\gachk
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版)でネットワーク対応)、作成したリポジトリをブラウザで見てみると、以下のようになります。
各ディレクトリの役割
Apache2
を導入して(Apache2(Windows版)でネットワーク対応)、作成したリポジトリをブラウザで見てみると、以下のようになります。
赤線を引いたところは、Apacheのhttpd.confファイルで設定したSVNParentPath(c:\svn)のエイリアスです。なんでもいいのですが、"svn"、"repos"、"svnrepos"などといったものを良く見かけます。
赤線を引いたところは、Apache
のhttpd.conf
ファイルで設定したSVNParentPath
(c:\svn
)のエイリアスです。なんでもいいのですが、svn
、repos
、svnrepos
などが多いようです。
青線の部分はプロジェクト名をディレクトリに、またその下に "trunk"、"tags"、"branches"を作っています。このサンプルプロジェクトでは、それぞれ以下のようになっています。
trunk | "src"ディレクトリ、"build.xml"、"bulid.properties"などが入っています。 |
tags | "gachk-0.1.0"、"gachk-0.5.1"といったディレクトリが入っています。これらは、リリースしたリビジョンでの"trunk"ディレクトリのコピーになっています。 |
branches | ブランチをいれますが、小さいプロジェクトなので今のところ空です。 |
青線の部分はプロジェクト名をディレクトリに、またその下に trunk
、tags
、branches
を作っています。このサンプルプロジェクトでは、それぞれ以下のようになっています。
タグ付け
例えばバージョン0.8.0をリリースした場合、以下の要領でタグ付けをしておきます(コマンドプロンプトで入力する場合は、^は使用せず、一行で入力してください)。
trunk | src ディレクトリ、build.xml 、bulid.properties などが入っています。 |
tags | hoge-0.1.0 、hoge-0.5.1 といったディレクトリが入っています。これらは、リリースしたリビジョンでのtrunk ディレクトリのコピーになっています。 |
branches | ブランチをいれますが、小さいプロジェクトなので今のところ空です。 |
svn copy http://localhost/svn/gachk/trunk ^
http://localhost/svn/gachk/tags/gachk-0.8.0 ^
-m "gachk-0.8.0としてリリース"
タグ付け
例えばバージョン0.8.0
をリリースした場合、以下の要領でタグ付けをしておきます(コマンドプロンプトで入力する場合は、^
は使用せず、一行で入力してください)。
Subversionでのcopyは、ファイルそのものをコピーしている訳ではないので、ディスク容量を浪費しません。
svn copy http://localhost/svn/hoge/trunk ^
http://localhost/svn/hoge/tags/hoge-0.8.0 ^
-m "hoge-0.8.0としてリリース"
リポジトリのバックアップ
"svnadmin dump"で、データベースにあるリポジトリをダンプファイルとしてバックアップすることができます。
Subversion
でのcopy
は、ファイルそのものをコピーしている訳ではないので、ディスク容量を浪費しません。
リポジトリのバックアップ
svnadmin dump
で、データベースにあるリポジトリをダンプファイルとしてバックアップすることができます。
svnadmin dump c:\svn\hoge > c:\temp\hoge.dump
逆にダンプファイルをデータベースにロードするには、"svnadmin load"を使用します。
逆にダンプファイルをデータベースにロードするには、svnadmin load
を使用します。
svnadmin create c:\svn\hoge2
svnadmin load c:\svn\hoge2 < c:\temp\hoge.dump
Subversionに大きなバージョンアップなどがあった場合、リポジトリスキーマ自体が更新されて、古いリポジトリを新しいものにアップグレードする必要がある*3ことがあります。これらの場合、まず古いバージョンの"svnadmin.exe"を使ってダンプファイルを作成し、新しい"svnadmin.exe"で、リポジトリの新規作成、ダンプファイルのロードを行います。古いバージョンのWindows用バイナリなどは、Windows Archiveにあります。
Subversion
のバージョンアップでリポジトリスキーマが更新された場合、リポジトリのアップグレードが必要になる*4ことがあります。これらの場合、まず古いバージョンの"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)などで無視するよう設定します。
ログの修正
無視パターン
bak
ファイル(*.bak
、*.BAK
)などをステータス表示(svn status
)などで無視するよう設定します。
ログの修正
コミットログの誤字脱字などを修正します。上書きされてしまうので十分注意して実行してください。
ネットワーク対応
ネットワーク越しにSubversionを使えるようにします。
ネットワーク対応
ネットワーク越しにSubversion
を使えるようにします。
- Apache2(Windows版)でネットワーク対応
- Apache HTTP Server を導入してSubversionをネットワーク越しで使用できるようにします。うまくいかない場合は、C:\Program Files\Subversion\W32notes.txt などを参照してください。
- Apache2(Windows版)でネットワーク対応
-
Apache HTTP Server
を導入してSubversion
をネットワーク越しで使用できるようにします。うまくいかない場合は、C:\Program Files\Subversion\W32notes.txt
などを参照してください。
サードパーティー製ツール
- ViewVC(←ViewCVSから名前が変更されました)
- ViewVC(ViewCVS)を導入することで、Subversionのリポジトリをブラウザからより詳しく閲覧することができます。
サードパーティー製ツール
- ViewVC(←ViewCVSから名前が変更されました)
-
ViewVC
を導入することで、Subversion
のリポジトリをブラウザからより詳しく閲覧することができます。
- WinMerge
- コマンドライン版のdiffの代わりに、GUIで差分を表示できるWinMergeを使用してみます。
- WinMerge
- コマンドライン版の
diff
の代わりに、GUI
で差分を表示できるWinMerge
を使用してみます。
参考リンク
Subversion関係のリンクです。
参考リンク
Subversion
関係のリンクです。
コメント
- Teraiさん、初めまして。このページにお世話になったものです。Subversion用のAntタスクを探していて見つけたので、参考までにsvnant、導入までは自分のところにおいておきました。SvnAntについて。大して情報量はありませんが・・・ -- kent?
- とおもったら、subclipseへのリンクがありますね・・・ -- kent?
- いやリンクはしてますけど、SvnAntは全然使ったこと無かったです。参考にさせてもらいますね。 -- aterai
- svnadmin setlog は、--bypass-hooks を指定すれば pre-revprop-change を用意しなくていいようです。 http://svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.setlog.html -- rabbit?
- なるほど、週明け会社で試してみます。 -- aterai
- svnadmin setlog をすこし変更し、rabbitさんの指摘もそのままコピーさせてもらいましたm(_ _)m。 -- aterai
- 結城さんのところのSubversionの初心者用記事と合わせて、忘れたときなど参照させてもらっています。いつもありがとうございます。 -- s?
- こんばんは。自分でもMercurialなどと併用することが多くなりましたが、Subversionにも相変わらずお世話になってます。1.7.0もそろそろ出るみたいですし、このページの内容もレストアしておきたいところです。 -- aterai
-
Terai
さん、初めまして。このページにお世話になったものです。Subversion
用のAnt
タスクを探していて見つけたので、参考までにsvnant、導入までは自分のところにおいておきました。SvnAntについて。大して情報量はありませんが・・・ -- kent
- とおもったら、
subclipse
へのリンクがありますね・・・ -- kent
- いやリンクはしてますけど、
SvnAnt
は全然使ったこと無かったです。参考にさせてもらいますね。 -- aterai
-
svnadmin setlog
は、--bypass-hooks
を指定すればpre-revprop-change
を用意しなくていいようです。 http://svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.setlog.html -- rabbit
- なるほど、週明け会社で試してみます。 -- aterai
-
svnadmin setlog
をすこし変更し、rabbitさんの指摘もそのままコピーさせてもらいましたm(_ _)m。 -- aterai
- 結城さんのところの
Subversion
の初心者用記事と合わせて、忘れたときなど参照させてもらっています。いつもありがとうございます。 -- s
- こんばんは。自分でも
Mercurial
などと併用することが多くなりましたが、Subversion
にも相変わらずお世話になってます。1.7.0
もそろそろ出るみたいですし、このページの内容もレストアしておきたいところです。 -- aterai