cvsよりも便利なバージョン管理システム。
一旦使えるようになってしまえば便利だが、インストールして一通り使える環境を整えるのは、かなりハード。
以下の覚え書きは、pw:subversion+viewcvsインストールを前提としている。
svn propedit svn:ignore . --editor-cmd vim
[miscellany] log-encoding = euc-jp enable-auto-props = yes [auto-props] * = svn:keywords=Id Date Author Rev URL
svn proplist binfile.tgzこの結果、svn:keywordsが含まれているなら、キーワード置換が有効になっている。
svn add --no-auto-props binfile.tgz
svn co file:///home/svn/repos/リポジトリ名
または
svn co svn+ssh://サーバ名/home/svn/repos/リポジトリ名
但し、tagsやbranches等がある場合、それらも含めてチェックアウトしてしまうと、サイズが何十倍にもふくれあがってしまうので、trunkディレクトリが存在するなら、trunkディレクトリのみチェックアウトすると良い。
svn co file:///home/svn/repos/リポジトリ名/trunk チェックアウト後のディレクトリ名
または
svn co svn+ssh://サーバ名/home/svn/repos/リポジトリ名/trunk ディレクトリ名
svn propset svn:executable 1 hoge.sh
svn propdel svn:executable hoge.sh
( TARGET=新しいリポジトリディレクトリ名 umask 002 svnadmin create --fs-type fsfs /home/svn/repos/$TARGET echo -n '#!/bin/sh REPOS="$1" REV="$2" cd /home/svn/viewcvs ./svndbadmin rebuild "$REPOS" "$REV" ' > /home/svn/repos/$TARGET/hooks/post-commit chmod 775 /home/svn/repos/$TARGET/hooks/post-commit cd /home/svn/viewcvs ./svndbadmin rebuild /home/svn/repos/$TARGET )
これで、fsfsでリポジトリを作成し、リポジトリをgroup writableに保ち、viewcvsのmysqlキャッシュに新しいリポジトリの場所を確保し、リポジトリ更新時にmysqlキャッシュも更新するようになる。
$REPOSが修正したいリポジトリの名前、「file:///home/svn/repos」がリポジトリ置き場、とする。
REPOS=test cd /home/svn/repos/$REPOS/hooks cp pre-revprop-change.tmpl pre-revprop-change chmod a+x pre-revprop-change svn propset \ --encoding=euc-jp \ --revprop -r リビジョン番号 \ svn:log '新しいコミットログ' \ file:///home/svn/repos/$REPOS rm pre-revprop-change
[auto-props] ○ *.txt = svn:keywords=Id × *.txt = svn:keywords="Id" # 「"」が付いてしまう × *.txt = svn:keywords Id # 「svn:keywords Id」という名前 ○ Makefile = svn:keywords=Id Date Author × Makefile = svn:keywords="Id Date Author" # 「"Id」「Date」「Author"」の三つ
○ $ svn propset svn:keywords Id hoge.txt ○ $ svn propset svn:keywords "Id" hoge.txt ○ $ svn propset svn:keywords "Id Date Author" Makefile × $ svn propset svn:keywords Id Date Author Makefile
svn helpを実行すれば、サンプルが勝手に作られる。
cd 消したファイルを復活させたいディレクトリ svn cp -r まだ該当ファイルが存在していた頃のリビジョン \ svn+ssh://サーバ名/home/svn/repos/リポジトリ名/消したファイルのpath .
※これは、編集内容をコミットログに残すまでもない時にのみ使います。普段はちゃんと、コミットログには編集内容を自然言語で残しましょう。
そのままの意味
コメント内容の追記編集削除や、ドキュメント整備のみ
ファイル名変更(移動とは意味合いが微妙に違う)
ファイル位置移動(主に違うディレクトリへの移動に使う)
小さな変更(修正ではなく、機能拡張的な意味で)
小さなバグ修正(アルゴリズム的な)
小さな訂正(文言やtypo等、非アルゴリズム的な)
一つのファイルを分割して複数のファイルにした、またはその逆
一時的なファイル操作(ファイルのswap時など)
(未完成時の)途中保存