wiki:ViewvcPatch

viewvc の(日本語文字コード混在環境向 ショートログ文字化け対策)パッチ

注意! 以下のパッチは現在では必要ありません。詳細は、2011/09/03の追記をご覧ください

リポジトリは

svnのリポジトリは  https://www.mucius.jp/src/patches です(チェックインはできません).

おれおれ証明書なので(笑),IE7ではデフォルトで蹴られますが, 信用される方のみどうぞ.

このパッチができること

このパッチを当てることで、shift_jis, euc-jp, iso2022_jp, utf-8 が混在するSubversionのリポジトリの文字化けが起きにくくなります.具体的には、

  1. use_localtime=1にしたときの(Windowsバージョンでの)ディレクトリ画面の時間表示とログ
  2. view と blame 画面
  3. シンタックスハイライトをOnにしときの view, blame画面
  4. 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を挿入済み)

開発版で、pykf用のパッチを使う場合は、source:/patches/trunk/pygments/lexer.patch (pygments用のパッチ)も必要です.

chardetは、 ここにあります.

chardet用のパッチを当てた後で、やはり pykfにしたい場合は、source:/patches/trunk/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">

と追加しておけばよいでしょう.

追記(2011/09/03)

3年ぶりにviewvcのリポジトリをチェックしてみたところ、本家の方でchardetをつかった 文字コード推定に対応していました。よかったよかった。これは、ver.1.1.2から有効になっているようです。 ですので、trunkからの開発バージョンはもちろん、tarball/zipでダウンロードできる ver.1.1.11でも可能となっています。 但し、デフォルトでは無効になっているので、viewvc.confで、

detect_encoding = 1

とします。というわけで、ここのパッチはお役御免となったわけですが、

short_log_len = 20

などとしていると、ログに日本語を使っている場合、日本語の途中で切ってしまうために 文字化けすることがあります。これに対策するためのパッチを作りました。

エラーが無くなるまで、文末から1バイトづつ減らしてはデコードしてみるという かなり強引な方法ですが...

追記 (2008/11/04)

  • toutf8() を独立ファイルにしました。
  • python2.5に移行したので、コーデック名が前と違っています。2.4の場合は、以前のパッチを参考にして修正してください。
  • 小さいファイルで、文字コードがeucか、utf-8の場合、blameに失敗するために、うまく変換できないことがあります。

追記 (2008/2/19)

  • mod_python用のファイル名が,viewvc.py から viewvc_mp.py のように変更になっています(r1799).
  • mod_python を ver.3.3.1 にすると,viewvcがエラーを吐くようです.

 こちらの方 が対策されています.

追記 (2008/3/6)

  • リポジトリのディレクトリ構成を変更しました
  • リポジトリブラウザの最下部にある "ことなるフォーマットでダウンロード"からダウンロードすると、改行がLFのみになってしまうので、Windowsではパッチ当てに失敗するかもしれません。その時は改行記号を変えられるエディタでCR+LFに変更してみてください

追記 (2008/3/19)

  • 以下のパッチは、  こちらの方 が作成されたviewvcvs用のものがオリジナルです。Tracのパッチも、そのパッチを借用した形になっています。 (Trac移動時に抜けてしまいました。ごめんなさい。)
  • y-miyoさんによる追加修正を反映しました(ver.1.0.5のみ)。