- 追加された行はこの色です。
- 削除された行はこの色です。
-CVSの後継。徐々にCVSを置き換えていてオープンソースプロダクトでは採用多数。2007年ぐらいから企業でも採用事例続々でてきた。2009年後半より自宅でも利用中
#contents
*特徴 [#o6d0e7f1]
-CVSと違いファイルの移動やリネームしても履歴は継続される
-複数ファイルのcommitを1つのコミットとして扱える(グループコミット)
-賛否両論あろうが排他制御ができるようになった(昔は取り入れないといっていたのに)
*よく使うコマンド [#f2c7a102]
**svnからとってくる [#gdc26fc9]
svn co リポジトリへのパス
-リポジトリパスはhttpなら通常のURLと一緒。
**リポジトリを最新化 [#x96c837b]
-更新したいディレクトリに移動
svn up
**コミット [#b99c50e5]
svn commit もしくは svn ci
*他のプロジェクトのソースを参照する(externals) [#oeb36b1b]
シンボリックリンクのようなもの。メインは別のリポジトリで開発していてそこを参照したい場合に設定する。参照オンリーではなくコミットまで出来てしまう点は注意。以前はフォルダ単位でしかできなかったが、1.6以降ファイル単位も可能になった。
**TortoiseSVN設定 [#i40061f7]
属性の設定を選んで、属性名はsvn:externalsを選ぶ。
設定値はファイル単位で記述、絶対パスでも可能
../../../../../../../404.html 404.html
../../../../../../../500.html 500.html
*フォルダの移動など [#q7155123]
**サーバー移転 [#m577bfd9]
サーバの情報が記述されているメタ情報(.svn)を書き換える必要がある。通常はsvnのコマンドで行う。GUI使ったほうが楽かも
svn switch --relocate
**ローカルチェックアウトディレクトリ移転 [#m61b6617]
これはトップレベルを移動するだけで良い。一旦チェックアウト後そのディレクトリをプログラム実行場所まで移動してもメタ情報は相対パスで記述されているので大丈夫
*設定など [#i05d8d47]
**Apacheと連携して使う [#t198c7ea]
-CentOS5.4で検証。まずはsvnモジュールのインストール
yum install mod_dav_svn.
-次にhttpd.confの設定
-IPアドレス制限とBASIC認証をかけている
<Location /mysvn>
DAV svn
SVNParentPath "/home/svn"
SVNListParentPath on
deny from all
allow from xxx.xxx.xxx.xxx
AuthType Basic
AuthName "Rutake Repository"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Location>
-リポジトリの以下のディレクトリに書き込み権限を与えておく。与えないと「can't open activity db」などのエラーがでる。
chown -R apache:apache db
chown -R apache:apache dav
**認証情報のおき場所 [#g62e85b1]
Unix 系システムでは~/.subversion/auth/、 Windows であれば %APPDATA%/Subversion/auth/
一度認証に成功するとそのID/PASSWORS情報がキャッシュされる。別のユーザでコミットしたい場合はそのファイルを消さないと前回成功したユーザIDでコミットされてしまう。
コマンドラインオプション中で--username または--passwordを指定するとそちらが優先して利用される。
**ネットワーク越しの利用 [#jbf25cc2]
httpを使わない場合はsvnプロトコルを利用するのがシンプル。ローカルマシン以外はデーモン起動する必要がある。
***デーモンとして起動(3690ポートを利用) [#f6765fed]
svnserve -d -r リポジトリへのパス
/etc/rc.d/rc.localにでも記述しておけば自動起動になる。
***xined経由で起動(安全) [#r085aa0b]
[[参考URL:http://yik.jp/wiki/svn_setting.html#l8]]
# vi /etc/services
svnserve 3690/tcp # Subversion
svnserve 3690/udp # Subversion
# vi /etc/xined.d/svnserve
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/bin/svnserve
server_args = -i
}
# chkconfig --add svnserve
# /etc/init.d/xinetd restart
*Windowsから利用する [#q8dc943c]
-TortoiseSVNというソフトがエクスプローラーの拡張でインストールでき秀逸な出来。
**TortoiseSVNの使い方 [#hb319e45]
エクスプローラーの拡張シェルとしてインストールされる。開発も活発なのでこれを選択しておけば安心。日本語パッケージをインストールしないとコミットコメントに日本語が使えないので注意。
**Subclipseの使い方 [#cf4ac129]
こちらはEclipseプラグイン。
**コマンドラインで使う [#safec12e]
***リポジトリ一覧見る [#f547b097]
-指定したパス以下のファイル・ディレクトリ情報が表示される。
svn list svn://ホスト名/svn/repos
**デフォルトの書き込み制限解除 [#bc97634c]
リポジトリのルートのconf以下のファイルを変更
-特定のユーザーのみ書き込み可能にする場合
[general]
password-db = passwd
-誰でも書き込めるようにする場合
[general]
anon-access = write
auth-access = write
認証に関しての情報が少なすぎ!!!
httpの場合はmod_svn_authzというモジュールを組み込まないと素通りできる
*BACKUP&RECOVERY [#bf0671a3]
-設定ファイルは別途バックアップ必要。出力はテキストファイルなのでとても大きい。この後圧縮かけると良い
svnadmin dump /usr/local/takeru > takeru.out
-リカバリーはリポジトリを作成後dumpを流し込む
mkdir -p /usr/local/takeru_from_backup
svnadmin create /usr/local/takeru_from_backup
svnadmin load /usr/local/takeru_from_backup < takeru.out
-設定ファイルのコピー
SVNROOT/confディレクトリ以下をごっそりコピーすればよい。
-ダンプするときに一部除外する(GPSデータを除外するときに利用)
svnadmin dump /home/svn/repos | svndumpfilter exclude 除外したいパス(/GPS) > /var/tmp/svnbackup
-日付つきでバックアップ
svnadmin dump /home/svn/repos > svn_rep_backup_`date +%Y%m%d`
-リポジトリを変えた場合はクライアント側でリポジトリのrelocateを行う。
*コマンド一覧 [#ob7a0c7c]
リポジトリは/svn/repos
|リポジトリ初期化(ディレクトリは作成しておく)|svnadmin create /svn/repos/|
|リポジトリを見る|svn list file:///svn/repos|
|インポート|svn import [ローカルdir] http://localhost/svn/repos/[リポジトリdir]|
|ローカルでインポート|svn import file:///svn/repos/newrepos|
|チェックアウト(通信方式(file,svn,http)が.svn/entriesにかかれる)|svn co file:///svn/repos|
|diffチェック|svn diff [ファイル名]|
|ブランチ、トランク間のdiff|svn diff url@HEAD url@HEAD | grep "+++"|
|プロンプトを出さない(マージの時に衝突のプロンプトを無視したいとか)|--non-interactive|
**ブランチ分かれてからのログ取得 [#r6bb5de1]
svn log --stop-on-copy
*用語集 [#se615446]
|trunk|メインとなるリポジトリ|
|branch|trunkから枝分かれしたもの(branchは枝の意味)|
|commit|ローカルにある変更をリポジトリに反映すること|
*WebUI [#lbbd8365]
ViewVCというのがある。
*インストール [#hb6fee6f]
RPMインストールでさまざまな依存関係があるので公式サイトからごっそり関連RPMを持ってくるとよい。DebianやVineならaptが使えるので非常に楽
**バイナリからインストール(推奨) [#v327b17d]
下記ソースインストールは2004年の情報で今はバイナリがあることがほとんどなのでこちらを推奨する。
**ソースインストール(非推奨) [#gedbfbfd]
RedHatES3GUIインストールサーバータイプで開発ツールのみ選択した。
**db [#t3d53b02]
# cd biuld_unix
# ../dist/configure
**apache [#k76f5d8c]
# ./configure --enable-mods-shared=all --enable-shared=yes --with-berkeley-db=/usr/local/BerkeleyDB.4.2
**subversion [#h6001f1d]
# ./configure --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-berkeley-db=/usr/local/BerkeleyDB.4.2
ですべて問題なく。
-追記:apr-utilなどはソースに含まれているので./configureだけでOK
*外部リンク情報 [#k0782c08]
http://c-brains.jp/blog/wsg/09/11/17-143618.php
#counter