subversion(svn)でDateキーワード置換すると文字化けするので英語表記にしたい

subversionで$Date$置換をすると日本語で“$Date: 2014-03-01 13:24:55 +0900 (2014/03/01 (土)) $”など日本語で置換される場合があります。

日本語に置換してくれるのは別にいいのですが、問題は文字コードでUTF-8固定みたいです。Windowsで開発しているとShift JISを使うことが多いと思います。そこにUTF-8の日付が入るので文字化けしてしまいます。

そこで、対策方法を2つご紹介します。

方法1 日本語が出る前に置換を打ち切る

通常、$Date:$と書くところをこう書きます。

$Date::                           $

そうすると、こんな感じになります。

$Date:: 2014-03-01 13:24:55 +0900#$

svnでは、キーワード置換時の文字数を制限することができます。この機能を使って日本語に置換される前に打ち切っちゃえ!という発想です。

文字数は::と$の間のスペースで指定します。置換したい文字数分のスペースを入れてください。

方法2 LC_TIMEを変更してチェックアウト/アップデートする

svnでは、commit時にキーワード置換されると思っている方が多いようなのですが、実はcheckout/update時に置換されます。

そこで、

export LC_TIME="en_US.UTF-8"

としてからcheckout/updateすればOKです。

Windowsの場合は、Cygwin版を使えばこの方法が使えます。Cygwin上で上記の様にLC_TIMEを設定します。そのウインドウ内でsvn checkout/svn updateすれば日付が英語表記になります。 (もちろん、あらかじめ Cygwin上にsubversionをインストールしておいてください)

ただ、この方法はTortoiseSVNでは使えません。まぁ、当然といえば当然ですけど。

やっぱりTortoiseSVNを使いたいから方法1かな。checkout/updateはCygwinで、それ以外はTortoiseSVNでと使い分けてもいいですが、やっぱり面倒ですしね。