subversion

[トップ][一覧][最近の更新]


cvsよりも便利なバージョン管理システム。

一旦使えるようになってしまえば便利だが、インストールして一通り使える環境を整えるのは、かなりハード。

以下の覚え書きは、pw:subversion+viewcvsインストールを前提としている。



おぼえがき

なんかよく分からないがcommitがOut of dateのトランザクションの何とかで失敗した時

.cvsignoreみたいな事をするには

svn propedit svn:ignore . --editor-cmd vim

.subversion/config

[miscellany]
log-encoding = euc-jp
enable-auto-props = yes
[auto-props]
* = svn:keywords=Id Date Author Rev URL

cvs add -kb binfileをするには

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 ディレクトリ名

chmod a+x

新しいリポジトリを作る

(
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に保ち、viewcvsmysqlキャッシュに新しいリポジトリの場所を確保し、リポジトリ更新時に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でキーワード置換を設定しても動かない時

[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

その他

cvsから移行してきた人が注意すべき点

自分用

省略コミットログの意味

※これは、編集内容をコミットログに残すまでもない時にのみ使います。普段はちゃんと、コミットログには編集内容を自然言語で残しましょう。

add,cp,mkdir,rm等のsvnコマンド

そのままの意味

note

コメント内容の追記編集削除や、ドキュメント整備のみ

rename

ファイル名変更(移動とは意味合いが微妙に違う)

move

ファイル位置移動(主に違うディレクトリへの移動に使う)

modify

小さな変更(修正ではなく、機能拡張的な意味で)

fix

小さなバグ修正(アルゴリズム的な)

correct

小さな訂正(文言やtypo等、非アルゴリズム的な)

separate,merge

一つのファイルを分割して複数のファイルにした、またはその逆

tmp

一時的なファイル操作(ファイルのswap時など)

save

(未完成時の)途中保存


最終更新 : 2008/02/22 03:50:19 JST