hgpushsvn.pyをWindowsで動作するようにする
ある程度までは動作するようになった。
--- a/hgsvn/run/hgpushsvn.py Sun Sep 21 01:11:16 2008 +0900 +++ b/hgsvn/run/hgpushsvn.py Sun Sep 28 04:08:11 2008 +0900 @@ -43,7 +43,7 @@ """ Given a string identifying an hg revision, get the canonical changeset ID. """ - s = run_command("hg log -q -r %s" % rev_string) + s = run_command("hg log -q -r %s" % rev_string).split('\n')[0] return s def get_hg_revs(first_rev, last_rev="tip"): @@ -154,7 +154,7 @@ details = get_hg_cset_details(end_rev) svn_client = pysvn.Client() print "*", "svn: checking in..." - svn_rev = svn_client.checkin(".", details['description']) + svn_rev = svn_client.checkin(".", unicode(details['description'], "cp93 2")) return svn_rev else: print "*", "svn: nothing to do"
[変更ポイント]
- 取得したhgのチェンジセットIDから、余計なラインフィードを削除。ラインフィードのせいでコマンドが実行されなかった模様。
- 日本語のコミットログが文字化けしていたが、pysvn.Client.checkin()に、コミットログをユニコードにして渡すようにしたら化けなくなった。
[現在わかっている問題点]
以下のようなファイルをhgでaddしたが、hgpushsvn.pyではsvnヘaddできなかった。
ファイル名: ソフト表現.txt
コミットログ: ソフト表現「・/〜」
C:\work\svntest\sally\svntest>hgpushsvn.py * svn up * hg log -q -r svn.522 * hg log -q -r eb3309f572e6:tip * hg up -C ddfffacd3ea8 * hg st -arm -X '.hg*' --rev eb3309f572e6 * svn add "・ "ソ\フト・ "ソ\フト表\現.txt" * hg log -v -r ddfffacd3ea8 * svn: checking in... * svn up