Subversion
目次
概要
Subversion は CVSに換る事、および最近の状況を組み込む事を目標としたバージョン管理システム。
subversion 1.0.1 を元に記述する。またApacheと連携とかは後まわしにして、個人環境で利用する方法を主にメモする。
とにかく楽に利用しようというのが基本です。
URL
http://www.contactor.se/~dast/svnusers/
http://arch.bluegate.org/mailman/listinfo/subversion-jp
svn st -u
svn diff
svn log --stop-on-copy
svn copy
svn move
svn merge --dry-run
svn diff --diff-cmd /usr/bin/diff -x -BbwEu
svn ci
svn up
インストール
dmg
パッケージが存在します。
http://www.open.collab.net/downloads/community/
特にサポート通知等が不要な場合はダウンロードボタンを押したあと、チェックボックスを全てはずしてOKすればダウンロード開始されます
Finkの利用
Fink でインストールすることもできます。
http://fink.sourceforge.net/pdb/package.php/svn
http://fink.sourceforge.net/pdb/package.php/svn-ssl
もしネットワーク越しに利用するならsvn-sslが良い。
fink selfupdate-rsync
fink install svn-ssl
fink install svn-client-ssl
パッケージの選択によっては、いろんな物がインストールされます。
Can't resolve dependency "system-java14-dev"
といわれるかもしれない。(
BuildDepends
の記述あるのでJavaが1.4.2なのにDev Pacageいれてないと出るはずです)
いって Java 1.4.2 Developer Packageを取得してください。これないとだめです。
MacPorts
sudo port -v install subversion +unicode_path
ソースインストール
ソースからインストールする場合は
http://subversion.tigris.org/project_packages.html
からtarballを取得します。
以下の物が必要です。Finkパッケージ出るまで手でコンパイルしてましたが、やめました。。
- Neon library 0.24.4 (http://www.webdav.org/neon/)
- Berkeley DB 4.X (http://www.sleepycat.com/download/db/index.shtml)
- Apache Portable Runtime 0.9.5 (http://apr.apache.org/)
Win
SubversionWindowsInstall - OBOE-GAKI -Tracかなり詳細でわかりやすい
設定
環境変数
svn --help
してみてください。
当然PATHが設定されていないと起動しません。あと、まったく設定しないで起動すると以下のエラーがでると思います。
svn: error: cannot set LC_CTYPE locale
svn: error: environment variable LC_ALL is en
このエラーがでてるってことはfinkでもPerlのエラーがでてると思います。
とりあえず以下に設定してください。
export LC_CTYPE=C
export LC_ALL=C
だたしこの設定だと日本語コメント等が書けません。日本語の問題はsvnコマンドにencodingオプションの付加、またはconfigのlog-encodingを付加して回避します。
利用方法
ここでは devproject がレポジトリ名です。通常はプロジェクト単位でレポジトリを作成するのがおすすめです。しかし、個人で利用するなら自分の開発する物をすべて単一プロジェクトとしてしまうってもかまいません。
/Users/sakito は ホームディレクトリです。適時読み変えてください。
$ mkdir -p ~/var/svn/
$ svnadmin create /Users/sakito/var/svn/devproject --fs-type fsfs
$ svn mkdir -m "initial setup" file:///Users/sakito/var/svn/devproject/trunk file:///Users/sakito/var/svn/devproject/tags file:///Users/sakito/var/svn/devproject/branches
$ cd ~/dev
$ ls
python java scheme <略>...
$ svn co file:///Users/sakito/var/svn/devproject/trunk .
$ svn add python java scheme
$ svn ci -m "start loading it in"
上記は ~/dev 内の物を登録しています。これはdev内の物すべてを管理化に置きたくなかったためにやっています。通常は以下のようにします。
$ svn import -m "initial setup" /Users/sakito/dev file:///Users/sakito/var/svn/devproject/trunk
無視パターンの設定
.classとか.pycとかを管理化におきたくないという要求がある場合に設定します。
config
$HOME/.subversion/config
を設定します。
[miscellany]
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.class *.pyc *.elc
tag
svn copy -m 'tag applescript-mode-0.0' file:///Users/sakito/var/svn/devproject/trunk/applescript-mode/ \
file:///Users/sakito/var/svn/devproject/tags/applescript-mode-0.0
確認
svn ls file:///Users/sakito/var/svn/devproject/tags/
バックアップ
svnadmin dump Users/sakito/var/svn/devproject/tags/ | gzip -9 > date "+devproject%Y-%m-%d_%H:%M:%S.gz"
リリース物の作成( cvs release )
.svnを含まない状態にしたい場合は export をおこないます。cvs releaseと似ていますが結構いろいろできます。
1. export [-r <REV>] <URL>[@<PEGREV>] [<パス>] 2. export [-r <REV>] <パス 1>[@<PEGREV>] [<パス 2>]
TortoiseSVNで変更のあったファイルだけexport
- ログを開く
- 2つのrevisionを選択する
- 右クリック->"compare revisions"
- リストのすべてのファイルを選択する
- 右クリック->"export to..."
Apache との連携
通常は不要です。svnserverを利用するのが楽。
httpd.confに設定
<Location /svn>
DAV svn
SVNPath /home/svn/sample
</Location>
複数レポジトリ対応するなら
SVNParentPath
パス認証するなら以下のように設定
<Location /svn>
DAV svn
SVNPath /usr/subversion/rep
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /usr/local/svn/svn-auth-file
Require valid-user
</Location>
svk
分散環境を作成できる
http://svn.elixus.org/svnweb/repos/browse/member/clkao/svk/
http://www.contactor.se/~dast/svnusers/archive-2004-06/0463.shtml
http://www.contactor.se/~dast/svnusers/archive-2004-06/0474.shtml
gomimemoグループ - koyachiの53memo -svk操作流れ
トラブルシュート
Can't recode stringが出る
localeを適切に設定してください。
Mac OS Xで利用可能なlocaleは/usr/share/locale/以下を参照してください。
unable to convert to/from UTF-8が出る
入力のエンコーディングが不正です。
Tools
svnservice
Winでサービスとしてsvnサーバを構築するためのツール
http://dark.clansoft.dk/~mbn/svnservice/
GUI Client
La Chose Interactive -Subversion
SmartSVN - Subversion/SVNClient
参考サイト
http://www.xsteve.at/prg/vc_svn/svn.txt
http://www.imasy.or.jp/~tai/wiki/index.php?UsingSubversion
http://slashdot.jp/article.pl?sid=04/02/23/154210
Subversionコミット時メール送信とTracチケットの自動クローズ --- Weboo!Returns.
marsのメモtrac-post-commit-hookが便利すぎる
Mac OS Xでの利用関係
http://www.pycs.net/bbum/2004/2/24/#200402241
http://www.pycs.net/bbum/2004/2/28/#200402281
.emacs
http://www.xsteve.at/prg/emacs/psvn.el
#!/bin/sh
unset LC_ALL
LANG=ja_JP.UTF-8
LC_TIME=C
LANGUAGE=C
export LC_TIME LANG LANGUAGE
exec /usr/local/svn/bin/svn "$@"
(require 'psvn)
(setq svn-status-hide-unmodified t)
(setq process-coding-system-alist
(cons '("svn" . utf-8) process-coding-system-alist))
