Subversion1.5.2でキーワード展開を使ってみる

感想おまちしてます!

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
キーワード展開とは「$作者」みたいにソースに書いたら、チェックインしたときに「ふじはら」みたいに置き換えてくれる機能。CVSにあったのでSVNにもあるだろう。
鍋の底さんのSubversion Book翻訳キーワード置換を参考に。

スポンサーリンク

キーワード

$LastChangedDate$
省略すると「$Date$」。最後にコミットされた日時。
$LastChangedRevision$
省略すると「$Revision$」。最後にコミットされたときにリビジョン。
$LastChangedBy$
短縮は「$Author$」。最後にコミットしたユーザ。
$HeadURL$
そのファイルのリポジトリのパス。
$Id$
上記キーワードを全部ひっくるめたようなもの。

使い方

SVNではいきなり使えない。ファイルごとに以下の設定が必要。

# $LastChangedDate$
# $Date$
# $LastChangedRevision$
# $Revision$
# $LastChangedBy$
# $Author$
# $HeadURL$
# $Id$
Test

上のようなfujihara.txtを用意して、以下のコマンドを打つ。

repo01>svn propset svn:keywords "Date Revision Author HeadURL Id" ./fujihara.txt
property 'svn:keywords' set on 'fujihara.txt'

TortoiseSVNの場合、ファイルを右クリックすれば属性というものがあるので、svn:keywordをキーに「Date Revision Author HeadURL Id」を与えればOK。
これをコミットすると以下のようになる。

# $LastChangedDate: 2008-09-20 21:19:00 +0900 (土, 20 9 2008) $
# $Date: 2008-09-20 21:19:00 +0900 (土, 20 9 2008) $
# $LastChangedRevision: 13 $
# $Revision: 13 $
# $LastChangedBy: $
# $Author: $
# $HeadURL: svn://localhost/repo01/trunk/fujihara.txt $
# $Id: fujihara.txt 13 2008-09-20 12:19:00Z  $
Test

自動でキーワード展開してもらう

Unixなら「~/.subversion」が使われる。Vistaの場合、コマンドプロンプトで以下を打つと設定ファイルの場所がわかる。

C:\Users\svntest>echo %APPDATA%
C:\Users\svntest\AppData\Roaming

ディレクトリを見てみると、Subversionというフォルダがあり、設定はconfigファイルになるらしい。ここで以下の設定を行う。

[miscellany]
enable-auto-props = yes
[auto-props]
*.txt = svn:keywords=Date Revision Author HeadURL Id

これでdai.txtを作って「$Date$」とか設定すると、コミットすれば自動で属性が設定された。でも、これってClientごとにやれってことだよなー。。。サーバで設定でないが残念。