Announce

PukiWiki contents have been moved into SONOTS Plugin (20070703)

svn

svnの使い方

Table of Contents

svn コマンド

svn export

.svn 情報なしでのファイルのコピー

svn import

.svn 情報なしでのコミット(初回はこうしてファイルを登録し、その後チェックアウトする)

svn diff

svn diff -r 615
svn diff -r 615:625

svn revert

svn revert --recursive .

svn merge

古いrevisionに戻す

svn merge -r 897:892 svn+ssh://nseo@...../trunk

ブランチのマージ

$ cd /branch # assume the local copy directory of a branch as 'branch'
$ svn update
$ svn log --stop-on-copy # find the starting revision of the branch
$ svn co svn+ssh:// ..... trunk/ /trunk
$ cd /trunk
$ svn merge -r [REV]:HEAD svn+ssh://..../branches/[branch]

http://www-aos.eps.s.u-tokyo.ac.jp/~takagi/subversion.html#sec33

svn ls (レポジトリを ls)

ブランチ名の確認をしたり

svn ls svn+ssh://nseo@..../

svn copy (ブランチの作成)

svn copy svn+ssh://nseo@..../trunk svn+ssh://nseo@..../branches/hoge-20090812

svn mv (レポジトリ側で rename)

svn mv  svn+ssh://nseo@..../branches/hoge-20090812 svn+ssh://nseo@..../branches/moge-20090812

UNIXコマンド

.svn 消去

find . -name '.svn' | xargs rm -r

ディレクトリ名に空白があったりしてうまく行かない場合は

find . -name '.svn' -exec echo \"\{\}\" \; | xargs rm -r

.svn を除いて zip

find . -name ".svn" -prune -o -print | xargs zip a.zip

特定のステータスのファイルだけ revert

例えば

D    hoge.txt
svn st | grep '^D' | sed 's/^D//' | xargs svn revert

ローカルでの SVN レポジトリの作成と利用

mkdir /path/to/repos
svnadmin create /path/to/repos/svnrepo # レポジトリを作る
svn import [project dir] file:///c:/cygwin/path/to/repos/[project name] -m 'initial import'
mv [project dir]  [project dir].bak
svn co file:///c:/cygwin/path/to/repos/[project name] [project dir]

レポジトリ内のプロジェクトを消す

svnadmin dump /path/to/repos > repos-dumpfile
cat repos-dumpfile | svndumpfilter exclude [project name] > remove-dumpfile
mkdir /path/to/new/repos
svnadmin create /path/to/new/repos
svnadmin load /path/to/new/repos < remove-dumpfile

svnsync (レポジトリの同期)

同期先レポジトリの作成 + 設定

レポジトリ作成

$ cd /path/to/repos/
$ svnadmin create [repositoryname]

フックスクリプトpre-revprop-changeを作成する

$ cp [repositoryname]/hooks/pre-revprop-change.tmpl [repositoryname]/hooks/pre-revprop-change
$ chmod 755 [repositoryname]/hooks/pre-revprop-change

同期先初期化

$ svnsync init --username ユーザ名 --password パスワード file:////path/to/repos/[repositoryname] svn+ssh://SVNサーバ/SVNレポジトリへのパス

あーSVNサーバにミラー元から接続しないといけないのか・・・ 参考