Windowsにてwin32mbcsを有効にしてMercurial 1.3 を使うとエラーになります

274 views
Skip to first unread message

monjudoh

unread,
Jul 7, 2009, 4:23:40 AM7/7/09
to mercurial-ja
元々1.2.1を使用していたWindows上で、
http://mercurial.berkwood.com/
ここからダウンロードした1.3のインストーラからインストールしました。

win32mbcsを有効にすると、
hg st,hg parents等で、以下のようなエラーが発生してしまいました。
set LANG=enしてもメッセージが英語に変わっただけで同じエラーが発生します。
また、「hgext.win32mbcs=」を[extensions]配下からコメントアウトすると出なくなりました。
今はとりあえず1.2.1に戻して使っています。

>hg st
** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or merc...@selenic.com
** Mercurial - 分散構成管理(バージョン 1.3)
** Extensions loaded: win32mbcs
Traceback (most recent call last):
File "hg", line 27, in <module>
File "mercurial\dispatch.pyc", line 16, in run
File "mercurial\dispatch.pyc", line 27, in dispatch
File "mercurial\dispatch.pyc", line 43, in _runcatch
File "mercurial\dispatch.pyc", line 428, in _dispatch
File "mercurial\hg.pyc", line 68, in repository
File "hgext\win32mbcs.pyc", line 117, in reposetup
File "hgext\win32mbcs.pyc", line 85, in wrapname
KeyError: 'os.path'

>hg parents
** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or merc...@selenic.com
** Mercurial - 分散構成管理(バージョン 1.3)
** Extensions loaded: win32mbcs
Traceback (most recent call last):
File "hg", line 27, in <module>
File "mercurial\dispatch.pyc", line 16, in run
File "mercurial\dispatch.pyc", line 27, in dispatch
File "mercurial\dispatch.pyc", line 43, in _runcatch
File "mercurial\dispatch.pyc", line 428, in _dispatch
File "mercurial\hg.pyc", line 68, in repository
File "hgext\win32mbcs.pyc", line 117, in reposetup
File "hgext\win32mbcs.pyc", line 85, in wrapname
KeyError: 'os.path'

Shun-ichi GOTO

unread,
Jul 8, 2009, 6:19:38 AM7/8/09
to mercurial-ja
# このMLをついさっき知りました。

On 7月7日, 午後5:23, monjudoh <monju...@gmail.com> wrote:
> win32mbcsを有効にすると、
> hg st,hg parents等で、以下のようなエラーが発生してしまいました。
> set LANG=enしてもメッセージが英語に変わっただけで同じエラーが発生します。
> また、「hgext.win32mbcs=」を[extensions]配下からコメントアウトすると出なくなりました。
> 今はとりあえず1.2.1に戻して使っています。

以下の変更でダメになったみたいです。

changeset: 8491:bd45047afaeb
user: Matt Mackall <m...@selenic.com>
date: Sun May 17 17:13:56 2009 -0500
files: hgext/win32mbcs.py
description:
win32mbcs: remove silly eval

上記修正を破棄することで治ります。
具体的には以下のように:

diff -r 94fc1312bc55 hgext/win32mbcs.py
--- a/hgext/win32mbcs.py Mon Jul 06 13:38:56 2009 +0900
+++ b/hgext/win32mbcs.py Wed Jul 08 19:18:50 2009 +0900
@@ -85,7 +85,7 @@
idx = name.rfind('.')
module = name[:idx]
name = name[idx+1:]
- module = globals()[module]
+ module = eval(module)
func = getattr(module, name)
def f(*args):
return wrapper(func, args)

--
Shun-ichi Goto

Shun-ichi GOTO

unread,
Jul 8, 2009, 6:32:09 AM7/8/09
to mercurial-ja
2009/07/08 19:19 に Shun-ichi GOTO<shunic...@gmail.com> さんは書きました:
> 以下の変更でダメになったみたいです。

BTSに登録しときました。
http://mercurial.selenic.com/bts/issue1729

--
Shun-ichi GOTO

フジワラ

unread,
Jul 9, 2009, 12:50:58 AM7/9/09
to mercurial-ja
フジワラです。

On 7月8日, 午後7:19, Shun-ichi GOTO <shunichi.g...@gmail.com> wrote:
> # このMLをついさっき知りました。

ひっそり運営していて済みません(笑)。

どこかで大々的にアナウンスしたりした方が良いのかもしれませんが、
「どこで?」というのが思いつかないでおります。

何か良いアイディアがあれば是非お知らせください > メンバーの皆様

> 以下の変更でダメになったみたいです。
>
> changeset: 8491:bd45047afaeb
> user: Matt Mackall <m...@selenic.com>
> date: Sun May 17 17:13:56 2009 -0500
> files: hgext/win32mbcs.py
> description:
> win32mbcs: remove silly eval
>
> 上記修正を破棄することで治ります。
> 具体的には以下のように:
>
> diff -r 94fc1312bc55 hgext/win32mbcs.py
> --- a/hgext/win32mbcs.py Mon Jul 06 13:38:56 2009 +0900
> +++ b/hgext/win32mbcs.py Wed Jul 08 19:18:50 2009 +0900
> @@ -85,7 +85,7 @@
> idx = name.rfind('.')
> module = name[:idx]
> name = name[idx+1:]
> - module = globals()[module]
> + module = eval(module)
> func = getattr(module, name)
> def f(*args):
> return wrapper(func, args)

エクステンションの作者自らの確認、ありがとうございます!

本来の「機能テスト」とはニュアンスが違っちゃいますけど、
エクステンション系は「import 可否」ぐらいでもテストを追加した
ほうが良いんでしょうかねぇ?

先の fixutf8 でのスレッドでも、稲田さんが「エクステンションのロード契機が
変更されたかも?」と仰ってましたけど、コアの機能と違って、
エクステンションはリリース時チェックが緩くなりがちなようですし...。

Shun-ichi GOTO

unread,
Jul 9, 2009, 10:09:19 AM7/9/09
to mercur...@googlegroups.com
2009/07/09 13:50 に フジワラ<flying...@gmail.com> さんは書きました:
> エクステンションの作者自らの確認、ありがとうございます!

しかしながらfixutf8が出て以降、自身はwin32mbcsをほとんど使ってないため、
先のパッチを当ててもちゃんと動いていないことにいまさら気付いて対処中です。
win32mbcs利用者はもすこしお待ちを。てか、1.1くらいからうまく機能して
ないんじゃないかと思われ。

dev MLにも投げましたが、先のパッチを含む、一連のパッチを作りました。
http://mercurial.selenic.com/bts/issue1729
(filename: fix-win32mbcs.patch)

hg-crew に対する修正ですが、1.3のソースにもあたるはずですので、
win32mbcsを使ってる人は試していただけると嬉しいです。
このエクステンションの効能はsjis or big5な人に対してのみなので、
Mattをはじめとする開発陣はあまり試してもらえないので。

> 本来の「機能テスト」とはニュアンスが違っちゃいますけど、
> エクステンション系は「import 可否」ぐらいでもテストを追加した
> ほうが良いんでしょうかねぇ?
>
> 先の fixutf8 でのスレッドでも、稲田さんが「エクステンションのロード契機が
> 変更されたかも?」と仰ってましたけど、コアの機能と違って、
> エクステンションはリリース時チェックが緩くなりがちなようですし...。

なんかしらの機能テストがリポジトリにないと、やっぱだめだと、特に今回思いましたですよ。
tests/ ディレクトリにおけるテストスクリプトを用意しようと思ったのだけど、
Windowsだし、sjisが絡むしでいまひとつうまくなかったので、単独で動く
テストスクリプトを用意してみました。これも issue1729に添付しておきましたので、
興味がある人は試してみてください。
(filename: test-win32mbcs.py)

--
Shun-ichi GOTO

Shun-ichi GOTO

unread,
Jul 24, 2009, 12:36:26 AM7/24/09
to mercurial-ja
On 7月7日, 午後5:23, monjudoh <monju...@gmail.com> wrote:
> 元々1.2.1を使用していたWindows上で、http://mercurial.berkwood.com/
> ここからダウンロードした1.3のインストーラからインストールしました。
>
> win32mbcsを有効にすると、
> hg st,hg parents等で、以下のようなエラーが発生してしまいました。
> set LANG=enしてもメッセージが英語に変わっただけで同じエラーが発生します。
> また、「hgext.win32mbcs=」を[extensions]配下からコメントアウトすると出なくなりました。
> 今はとりあえず1.2.1に戻して使っています。

この件は先程リリースされた 1.3.1 では治っていることとおもいます。
期をみて1.3.1への更新を行い、問題がないか確認していただけると助かります。

--
Shun-ichi Goto

monjudoh

unread,
Aug 2, 2009, 10:58:05 PM8/2/09
to mercurial-ja
> この件は先程リリースされた 1.3.1 では治っていることとおもいます。
> 期をみて1.3.1への更新を行い、問題がないか確認していただけると助かります。
1.3.1に更新して確認したところ問題は発生しませんでした。
ありがとうございます。
Reply all
Reply to author
Forward
0 new messages