Bazaar の docdiff で Word の diff を見る

設計書は Excel だったり Word だったりするので。
最近はもっと別の方法があったりするのかな?


C:\Program Files 配下へファイルを置くので、管理者権限でコマンドプロンプトを実行。

> cd /d C:\Program Files\Bazaar\plugins
> bzr branch http://gigo-ice.org/repos/docdiff

> set BZR_DOCDIFF_DIFFPROG=C:\app\WinMerge\WinMergeU.exe
> set BZR_DOCDIFF_XDOC2TXT=C:\app\xdoc2txt\xdoc2txt.exe

試してみる。

> cd C:\test
> bzr init

> bzr add テスト.docx
adding "テスト.docx"

> bzr commit
Committing to: C:/test/
added テスト.docx
Committed revision 1.

変更して
> bzr commit
Committing to: C:/test/
modified テスト.docx
Committed revision 2.

> bzr docdiff -r1..2 テスト.docx
bzr: ERROR: exceptions.AttributeError: 'unicode' object has no attribute 'name'

Traceback (most recent call last):
  File "bzrlib\commands.pyo", line 923, in exception_to_return_code
  File "bzrlib\commands.pyo", line 1123, in run_bzr
  File "bzrlib\commands.pyo", line 691, in run_argv_aliases
  File "bzrlib\commands.pyo", line 710, in run
  File "bzrlib\cleanup.pyo", line 135, in run_simple
  File "bzrlib\cleanup.pyo", line 165, in _do_with_cleanups
  File "C:/Program Files/Bazaar/plugins\docdiff\__init__.py", line 88, in run
  File "C:/Program Files/Bazaar/plugins\docdiff\__init__.py", line 111, in _diff_to_f
ile
AttributeError: 'unicode' object has no attribute 'name'

bzr 2.3.0 on python 2.6.6 (Windows-7-6.1.7600)
arguments: ['bzr', 'docdiff', '-r1..2', '\x83e\x83X\x83g.docx']
encoding: 'cp932', fsenc: 'mbcs', lang: None

よくわかっていないけど、動くように変更。

=== modified file '__init__.py'
--- __init__.py 2008-07-29 15:40:49 +0000
+++ __init__.py 2011-03-05 04:13:24 +0000
@@ -108,7 +108,7 @@

     if not using_working_tree:
         tmp_to = write_old_to_temp(to_tree, file_id, to_rev_no)
-        to_file = tmp_to.name
+        to_file = tmp_to

     if revision is None:
         from_tree = work_tree.basis_tree()

もう一度 bzr docdiff -r1..2 テスト.docx を実行するとこんな感じになります。