読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

SVNでのデフォルト値を設定しておく事で $Id とかを自動的に propset しておく

手動だとすぐ忘れてしまいますよね><

というか、svn:keyword なのか svn:keywords なのか、または Id なのか ID なのか全く覚えられないので、自動で追加してくれる方が良いですよね。
という訳で、そのような設定をする場合は以下のファイルに追加するよ。
ちなみに、以下は mac の場合。linux 系も同じだと思われる。 TortoiseSVN の場合はツールの設定から編集すると良いです。

~/.subversion/config

まず、自動で propset が行われる事を許可するため、 [miscellany] セクションの下でコメントアウトになっている

# enable-auto-props = yes

からコメントアウトを外します。
そうすると、さらに下に記載されている [auto-props] というセクションが有効になるので、その下の行に propset を記載していきます。
コメントアウト形式でサンプルが載っているのでほとんど迷う必要ないと思うけれど、自分の環境では以下のような感じ。思う所があればそのつど追加していきます。

 *.rb = svn:keywords=Id
 *.sh = svn:keywords=Id
 *.c = svn:keywords=Id
 *.h = svn:keywords=Id 
 *.js = svn:keywords=Id  
 *.html = svn:keywords=Id
 *.css = svn:keywords=Id

これで、上記のファイルタイプに合致するファイルには自動で propset svn:keywords Id が設定されるようになります。べんりべんり。

その次(本題)の話。〜タイムスタンプ重要編〜

上記はユーザベースでのお話。
ここからはそうではないお話。
業務上、開発しているプログラムや設定ファイルを本番環境等にリリースするにあたり、ファイル日付を重視します。ぶっちゃけ、リビジョン番号見ろよ、で話は済むのですが、実際に移行したりするのは開発メンバーではないので、リビジョンが〜と言っても話が通じにくいし、何よりファイル日付だと見るのが簡単(ls で済むからね)。
というわけで、ファイル日付は原則コミットした時刻になっていると良いのだけれど、普通にチェックアウトすると最初にチェックアウトした時の時刻でファイルが生成されます。
例えば ファイルA が 10月10日 10:00 にコミットされたとしても、チェックアウトした時が 11月11日 11:00 の場合は 11 月の日付でタイムスタンプが刻印されます。
で、今まではそれを嫌ってエクスポートコマンドでファイル一式を取得していたのだけど、この度チェックアウトからでも同様の事ができることが判明。
それは上記の enable-auto-props と同じ [miscellany] セクションの

use-commit-times

という項目。この項目を = yes にしておくと、チェックアウト時にもファイルA のタイムスタンプはコミット時刻になっているので、あえてエクスポートする必要はなくなるのでした。

この設定は個人の設定ではなくサーバ側の svn クライアントの設定としてやったげる

今の自社環境では husdson で定時やコミット時にビルドさせているのだけど、そいつの svn 設定ファイルに上記の設定をしてあげれば、常に時刻はコミット時刻になる。そうすると、 hudson がせっせとビルドしてくれたモジュール群がそのままリリース用のモジュールとして使えるようになるので、完全に自動化できますね! 便利ですね! という話です。

ただし、これは妄想です

hudson が使用する svn コマンドがうまく config ファイルを読んでくれるか確認していません><
できたらいいなーと思うのですが、誰か一足先に確認してくだしあ\(^o^)/

追記:2008/11/12

上記の設定を hudson が動いている Linux サーバで記載してあげたら、ちゃんと反映されたよ!
これで常時ビルドできるし、タイムスタンプはコミット時刻のままという、いつリリースしても大丈夫な状態が作れるようになった!><