リポジトリブラウザで全角ファイルパス(Ver0.9.2-ja)

リポジトリに全角のフォルダ名があると、そのフォルダをリポジトリブラウザで開いたときに文字化けする。
URLにエンコードされた文字がある場合に、 Python(Apache?)がPATH_INFOを正しくない方法で勝手にデコードしてしまうようだ。 Tracのcore.pyを改造し、PATH_INFOでなくREQUEST_URIから取得する。

対象バージョン(これ以上なら、たぶん大丈夫)

ServerOSWindows2000Proインストール済み前提
Subversion1.2.0インストール済み前提
Apache2.0.54インストール済み前提
Trac0.9.2-jaインストール済み前提
Python2.3.5インストール済み前提

パスなどについて

以下の仮定で書いてます。適宜読み替えてください。
Python2.3インストールフォルダC:\Python23

1.core.pyを編集

c:\Python23\Lib\site-packages\trac\web\cgi_frontend.pyyをテキストエディタで編集以下の行を探し、変更する。
    self.path_info = self.__environ.get('PATH_INFO', '')

    #self.path_info = self.__environ.get('PATH_INFO', '')
    self.path_info = urllib.unquote(self.__environ.get('REQUEST_URI',''))
    #p = re.compile('/[^/]+/[^/]+(/[^?]+)')
    p = re.compile('.+(/browser/[^?]+)')
    if p.match(self.path_info) == None :
        self.path_info = self.__environ.get('PATH_INFO', '')
    else:
        self.path_info = p.match(self.path_info).group(1)
なお、この改造は
URLの中の/browser/という文字があるかどうかを判別し、それ以降をpath_infoとして扱います。なので、サーバ名や親のフォルダに/broser/なんてのがあるとたぶん正しく動きません。

○:http://localhost/cgi-bin/trac.cgi/browser/
×:http://localhost/browser/trac.cgi/browser/
2005年12月11日(日) 02:12:52 Modified by weekbuild




スマートフォン版で見る