このパッチを当てることで、shift_jis, euc-jp, iso2022_jp, utf-8 が混在する Subversionのリポジトリの文字化けが起きにくくなります.具体的には、
- use_localtime=1にしたときの(Windowsバージョンでの)ディレクトリ画面の時間表示とログ
- view と blame 画面
- シンタックスハイライトをOnにしときの view, blame画面
- diff 画面
での日本語の文字化けが改善されます.但し、side by side diff での日本語混在による カラムずれの対策はまだです...
CVSのリポジトリに関しては未対策です.すいません...
下にも書いたのですが、ごく小さいファイルで文字コードがEUCかUTF-8の場合、 blameに失敗して、うまく変換できません。 blame の --force オプションに相当するものを 探してみたのですが、c のソースコードにある、svn_client_blame3() を使うための svn_diff_file_options_t をpythonから使うことができていない為、あきらめモードです... どなたか詳しい方、ご教示を... (ver.1.0.?では、コマンドラインのsvnをpipeで 使っているので、--forceを挿入済み)
- misc_patches/viewvc/1.1.0-beta/viewvc_all.patch は安定版用(ver.1.1.0-beta)('08/11/13追加 python2.5用)
- misc_patches/viewvc/1.0.7/viewvc_all.patch は安定版用(ver.1.0.7)('08/11/04追加 python2.5用)
- misc_patches/viewvc/1.0.5/viewvc_all.patch は安定版用(ver.1.0.5)('08/03/03追加,'08/11/13 python2.5用に修正)
- misc_patches/viewvc/viewvc_all.patch がchardetを使用した開発版 ( rev.2047に対するパッチ.ver1.2-dev)
- misc_patches/viewvc/viewvc_pykf_all.patch も開発版ですが、pykfを使用
開発版で、pykf用のパッチを使う場合は、 misc_patches/pygments/lexer.patch (pygments用のパッチ)も必要です.
chardetは、http://chardet.feedparser.org にあります.
chardet用のパッチを当てた後で、やはり pykfにしたい場合は、 misc_patches/viewvc/forPykf/toutf8.py に置き換えて、 viewvc.py の "chardet" と書かれている 部分(2カ所あります)を全て"pykf"に書き換えることで、pykfが使えるようになります.
chardetを使わない場合は、pykf をインストールする必要があります. windows用のバイナリがあるのが嬉しいですね.
ああ,でも,ここのソースはヘッダファイルが足りないので,Linux等で使いたい人は
こちらの方 で提供されているtarballが良いようです.
このパッチは,ブラウザの表示関係については何もしていません.
httpd.conf等に
AddDefaultCharset utf-8
と書いておけば文字化けしないはずですが,standalone.pyを使う場合は template/header/header.eztの
head部分に
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
と追加しておけばよいでしょう.
3年ぶりにviewvcのリポジトリをチェックしてみたところ、本家の方でchardetをつかった 文字コード推定に対応していました。よかったよかった。 これは、ver.1.1.2から有効になっているようです。 ですので、trunkからの開発バージョンはもちろん、tarball/zipでダウンロードできる ver.1.1.11でも可能となっています。 但し、デフォルトでは無効になっているので、viewvc.confで、
detect_encoding = 1
とします。というわけで、ここのパッチはお役御免となったわけですが、
short_log_len = 20
などとしていると、ログに日本語を使っている場合、日本語の途中で切ってしまうために 文字化けすることがあります。これに対策するためのパッチを作りました。
- misc_patches/trunk/viewvc/viewvc.patch
エラーが無くなるまで、文末から1バイトづつ減らしてはデコードしてみるという かなり強引な方法ですが...
- toutf8() を独立ファイルにしました。
- python2.5に移行したので、コーデック名が前と違っています。2.4の場合は、以前のパッチを参考にして修正してください。
- 小さいファイルで、文字コードがeucか、utf-8の場合、blameに失敗するために、うまく変換できないことがあります。
- mod_python用のファイル名が,viewvc.py から viewvc_mp.py のように変更になっています(!r1799).
- mod_python を ver.3.3.1 にすると,viewvcがエラーを吐くようです. こちらの方が 対策されています.
- リポジトリのディレクトリ構成を変更しました
- リポジトリブラウザの最下部にある "ことなるフォーマットでダウンロード"からダウンロードすると、改行がLFのみになってしまうので、Windowsではパッチ当てに失敗するかもしれません。その時は改行記号を変えられるエディタでCR+LFに変更してみてください
- 以下のパッチは、 [http://e.tir.jp/wiliki/viewcvs こちらの方] が作成されたviewvcvs用のものがオリジナルです。Tracのパッチも、そのパッチを借用した形になっています。 (Trac移動時に抜けてしまいました。ごめんなさい。)
- y-miyoさんによる追加修正を反映しました(ver.1.0.5のみ)。
このところWindowsのソフト開発でもコメントにUTF-8を使っていたので, Tracのバージョンが上がって, パッチが無効になっていることに気づいていませんでした(!^_!^;;
そんなわけで,久々にパッチを更新しました.trac 0.10.4用ですが,きっと0.10.3でもいけるでしょう.
svn:mime-type をちゃんと設定してあげれば,このパッチは不要なのですが, マルチな環境にまたがったプロジェクトだったりすると,文字コードが混在してしまって, それをいちいちsvn:mim-typeで設定するのも大変かなあと.
もっとも,先にも書いたように,僕自身はWindowsでもLinuxでもutf-8でソースコードを 書くようになったので,それほど必要性を感じなくなってきたんですが...
- misc_patches/trunk/trac/api.patch は,trac/mimeview/api.py に対するパッチ,
- misc_patches/trunk/trac/text.patch は, trac/utils/text.py に対するパッチです.
pykf をインストールする必要があります.
またまた久々に、0.11 用と、0.12用のパッチを作成しました。
- misc_patches/trunk/trac/0.11/Trac-0.11.7.patch が 0.11.7用
- misc_patches/trunk/trac/0.12/Trac-0.12.patch が 0.12用です。
今回からパッチを一つにまとめました。以下のようにあててください。
% patch -p1 < Trac-0.12.patch