Subversion のバックアップ(No.20)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Subversion へ行く。
- 1 (2011-06-09 (木) 18:55:24)
- 2 (2011-09-20 (火) 09:34:36)
- 3 (2011-09-20 (火) 21:42:26)
- 4 (2012-03-06 (火) 14:26:42)
- 5 (2012-08-13 (月) 16:18:34)
- 6 (2012-10-10 (水) 04:19:42)
- 7 (2012-10-10 (水) 14:09:37)
- 8 (2012-10-12 (金) 06:25:27)
- 9 (2012-10-12 (金) 16:36:10)
- 10 (2012-11-07 (水) 04:47:11)
- 11 (2012-11-07 (水) 15:11:54)
- 12 (2013-01-24 (木) 16:50:27)
- 13 (2013-01-25 (金) 13:07:53)
- 14 (2013-02-02 (土) 21:17:49)
- 15 (2013-02-18 (月) 17:41:22)
- 16 (2014-05-15 (木) 21:26:55)
- 17 (2014-05-16 (金) 03:03:08)
- 18 (2014-05-16 (金) 08:55:39)
- 19 (2014-08-25 (月) 15:57:16)
- 20 (2014-09-02 (火) 15:36:01)
- 21 (2014-10-02 (木) 15:10:49)
Subversion
概要
このページは、バージョン管理システムの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
つのディレクトリを作っておくのがお勧めのようです。
trunk
tags
branches
リポジトリの作成
以下、例としてプロジェクト名が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
クライアントです。
参考リンク
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