miau's blog?

VSS→SVN移行 その2

前回の続き。その他初期設定について。




■check-mime-type.pl

先日書いたように、svn:mime-type を設定しないと Trac での表示が文字化けして悲惨な感じです。
管理したいファイルの文字コードが全て統一されているならサーバ側で設定すればいいんだけど、そうじゃない場合はこれを使うといい感じです。

check-mime-type.pl - subversion: Subversion Tools and Contrib

pre-commit.tmpl を参考に、commit.tmpl を準備。

/hoge/fuga/check-mime-type.pl "$REPOS" "$TXN" || exit 1

みたいな感じで設定しておくと、新規追加ファイルをコミットする際に
・svn:mime-type が設定されているか
・svn:mime-type が text/* である場合、svn:eol-style が設定されているか
がチェックされ、上記を満たさない場合はエラーになります。

新規追加ファイルしかチェックしないようになってるけど、場合によっては全ファイルをチェック対象にするよう書き換えたほうがいいかも。

■Subclipse の svn1.4.0 対応

現在では対応しているそうです。(subclipse: Subclipse Changelog 参照)

今回導入された Subversion サーバのバージョンは 1.4.0 なんですが。
Subclipse 1.0.3 は svn1.3.0 までしか対応していないので、たまにエラーが発生してしまいます。

そんなわけで、Subclipse で svn1.4.0 を動作させる方法。

[subverson]1.4.0にバージョンアップ - udagawaの日記

この通りの操作でうまくいきました。

■auto-props

svn:mime-type と svn:eol-style を自動設定できると便利なんですが、

サクラエディタ→開発に参加したい方へ→Subversionの使い方→TortoseSVN初期設定

こんな感じで拡張子ごとにデフォルトの属性を設定できることになっています。

でも、

*.php = svn:eol-style=LF;svn:mime-type=text/plain; charset=EUC-JP

こうやると、
・svn:eol-style=LF
・svn:mime-type=text/plain
・charset=EUC-JP
の 3 属性が設定されることになるので、期待通りの動作はしてくれない。

なんかエスケープする手段はないのかな?ということでソース(libsvn_client/add.c)を読んでみたけど、そういう仕組みは無いらしい。
この仕様ってなんとかならない?要望出すべき?と思ったらやっぱり既に報告されてて、

No escaping of separator characters in auto-props

1.6 くらいで対応されるとのこと。(2009-04-15 追記: 1.6.1 で導入されました。詳しくは こちら)でもそんなに待てないよ。

ということで、面倒なのでバイナリエディタで ";" の部分を "|" で置き換え。
対象ファイルは TortoiseProc.exe(TortoiseSVN を使う場合)、svn.exe(svn クライアントを使う場合)、libsvnjavahl-1.dll(Subclipse を使う場合)の 3 ファイル。
このリテラルは libsvn_ra_dav/add.c からも呼ばれてるけど、今の SVN サーバでは SSL とか使ってないのでOK。たぶん。

そんな感じでひどく胡散臭いけど、

*.php = svn:eol-style=LF|svn:mime-type=text/plain; charset=EUC-JP

こんな感じで設定できるように。

私は
・メインPCはインターネットに接続できないのでソース取得が面倒
・インターネット端末はコンパイル環境が入っていない
という理由でこんな胡散臭い手段使いましたが、普通に add.c 書き換えてコンパイルしなおしたほうがいいと思います・・・。

■運用方法

SVN はチェンジセットという考え方があって、対応が一通り終わったタイミングでコミットすると何かと便利なわけですが。
設計書(うちのプロジェクトでは .xls 使用)に関してはマージが難しいので、チェンジセットの考え方は無視して随時コミットするようにしてます。
Excel ファイルのマージツールとかあればちゃんと管理できるんだけど。誰か作ってくれないかな。


その他感想ですが、Trac のチェンジセット参照機能が便利です。変更点の一覧が見やすいので、他の人の変更内容を頻繁にチェックできます。
今までもリリース直前にソースレビューを行ったりしていたんですが、なんか変な処理を見かけても、動作上問題がなければ「今からだとテストやり直せないからこのまま出しちゃえ」と流すことが多かったです。今後はレビュー頻度が増やせそうなので、ソースの品質を上げるのに役立ちそうです。
posted at 07:14:33 on 2006-11-16 by miau - Category: General No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

miau wrote:

Referer チェックしてたら「2007-03-05 時点では対応済み」との情報があったので追記しました。補足ありがとうございます。

ttp://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2F%CC%A4%C0%B0%CD%FD
2007-03-07 16:44:21

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。