1. Katsunori FUJIWARA
  2. patches-mbcs-safe-matching

Overview

HTTPS SSH
複数バイト文字中にバックスラッシュを含む、問題文字コード (problematic
encoding) を Mercurial と併用する際に、ファイル名/コミットログ等との合
致判定処理が、適切に実施されるように改善するためのパッチ群。


基本方針は:

    - 正規表現文字列を re.compile 呼び出し等に使用する直前で、文字列の
      MBCS 部分を '\xXX' 形式でエスケープする

      * hook_escaping.patch

    - 合致判定等に使用する文字列の元 (e.g.: revset/fileset や match 用
      パターン) の解析を unicode ベースで実施する

      * hook_filtering.patch
      * hook_tokenize.patch

    - unicode 化により発生する、呼び出し階層の末端部分での不整合にも対応

      * hook_decodestringescape.patch
      * 他のパッチにおける unicode 呼び出しでの処理実施


フックポイントを encoding モジュールに追加したのは以下の理由から:

    - 変更対象が全て i18n を import している (= 間接的に encoding が
      import) ので、読み込みコスト的なオーバヘッドは低い筈

    - 性能的には、encoding を経由する間接的な呼び出しよりも、変更対象ファ
      イル毎に個別にフックポイントを埋め込む方が良いと思われるが、
      win32mbcs 有効時に、関連モジュール全ての読み込みを保証するのは、
      逆にコストが高い (+ demand import が絡んで色々面倒っぽい)