hg-ssh 実行時に AttributeError が出る問題とその解決

環境

CentOS 6.3, Mercurial 1.4 (yum からインストール)

事象

hg-ssh を使った Mercurial へのアクセスに問題が発生した。 hg-ssh の実行時に以下のエラー。

remote: AttributeError: 'module' object has no attribute 'request'

解析と解決

香り屋先生が遭遇した事象 の逆の問題みたいだ。yum でインストールされる Mercurial のバージョンが古いため、hg-ssh で使われている dispatch.request が Mercurial のコード中に存在しない。 /usr/lib64/python2.6/site-packages/mercurial/dispatch.py のコードを読み解いたら引数を list で渡せばよさそうだったので、/usr/bin/hg-ssh を次のように変更。

-            dispatch.dispatch(dispatch.request(cmd))
+            dispatch.dispatch(cmd) 

試してみたら問題なく動いたので OK。

でも yum でインストールされるプログラムなんだから、こんなバグが残っているのはおかしくないか。まぁ動けば良かろうなのだ。