hgpushsvn.pyへursmさんのパッチを当ててみる
hgpushsvn.pyがWindows上で動作しない件。
Windowsではcommands.getstatusoutput()が動かないとのことで、
id:ursmさんが作成してくださった、パッチをあててみる。
http://gist.github.com/10884
hgpushsvn.py.diff
diff --git a/hgpushsvn.py b/hgpushsvn.py --- a/hgpushsvn.py +++ b/hgpushsvn.py @@ -11,14 +11,18 @@ def shell_quote(s): - return "'" + s.replace('\\', '\\\\').replace("'", "'\"'\"'") + "'" + if os.name == "nt": + q = '"' + else: + q = "'" + return q + s.replace('\\', '\\\\').replace("'", "'\"'\"'") + q def run_command(cmd, args=()): cmd += "".join(" " + shell_quote(a) for a in args) print "*", cmd - st, out = commands.getstatusoutput(cmd) + st = os.system(cmd) if st != 0: - raise RuntimeError("command failed with non-zero return code (%d): %s:\n%s" % (st, cmd, out)) + raise RuntimeError("command failed with non-zero return code (%d): %s" % (st, cmd)) return out def map_svn_rev_to_hg(svn_rev, hg_rev="tip", local=False):
実行してみるが、エラーとなる。どうもos.system(cmd)の標準出力をrun_commandの返値としなければならないらしい。
さらに
st = os.system(cmd)
を
out = os.popen(cmd).read()
に変えてみる。
で実行するとエラーは出なくなったものの、
C:\work\test>hgpushsvn.py * svn up * hg log -q -r svn.507 * hg log -q -r 47caef99b58a :tip * svn up
となって、まったくコミットされる様子がない
または、コミットされても、編集していないファイルが延々とコミットされていく。
(略) * svn: checking in... * hg tag -l -r 8d7376ca1d22 svn.419 * hg up -C 80747623c1bb * hg st -arm -X '.hg*' --rev 8d7376ca1d22 * svn add "Install.wiki" * hg log -v -r 80747623c1bb * svn: checking in... * hg tag -l -r 80747623c1bb svn.420 * hg up -C 11df47dfc2f0 * hg st -arm -X '.hg*' --rev 80747623c1bb * hg log -v -r 11df47dfc2f0 * svn: checking in... (略)
うーむ、ちゃんと処理を追って見ていかないとだめそう…。