我使用 svn 进行版本控制,希望能够并排比较 MS Word 文档的两个修订版本。我知道 Araxis Merge,但它会将文档转换为文本并进行比较,这比我需要的更聪明。我想要一个工具,让我可以直观地比较文件,同时保留文档中可能存在的格式、图像等。
我知道 MS Word 具有使用跟踪更改的比较文档功能,但这需要您的驱动器上存在文档的 2 个副本。我想直接比较 svn 存储库数据库中的修订,而不必还原我的本地副本、更改文件名,然后与另一个工作副本进行比较。
是否有任何工具(免费或商业)可以做到这一点?
答案1
不久前,我问了另一个关于文件差异(比较)的问题。您可以从这里挑选一些建议:
维基百科也总是有帮助的:
http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools
不过,对于日常工作,我通常会使用 vimdiff(Mac 有 vim)。对 vimdiff(默认最多 4 个)文件所做的操作是 vim -d file1 file2 file3 或 gvim -d file1 file2 file3
答案2
只需将旧文件导出到其他地方,然后使用 M$ 比较更改工具。
答案3
我用 applescript 编写了一个工具,用于使用 MS Word 来比较 word 文件的不同之处:
on run (arguments)
set old to first item of arguments as string
set new to second item of arguments as string
tell application "Microsoft Word"
activate
open old
compare active document path new as text
end tell
end run
这可以按如下方式运行osascript <path to script> old.docx new.docx
,也可以作为 difftool 添加到 .gitconfig 中osascript <path to script> $LOCAL $REMOTE
。我将其与 Sourcetree 一起使用。唯一的问题是必须授予对所有三个临时文件的访问权限
我扩展了脚本,以便根据文件类型将文件发送到相应的工具。目前,我使用 Word 处理 .docx 文件,使用 kdiff3 处理其他文件,这也可以扩展到其他工具。
on run (arguments)
set a to first item of arguments as string
set b to second item of arguments as string
if {a ends with ".docx" or a ends with ".doc"} then
diff({a, b})
else
do shell script "/usr/local/bin/kdiff3 " & a & " " & b
end if
end run
on diff(arguments)
set old to first item of arguments as string
set new to second item of arguments as string
tell application "Microsoft Word"
activate
open old
compare active document path new as text
end tell
end diff
我知道我可能晚了 10 年,但一直在努力寻找解决方案,所以希望这对某些人有帮助。
答案4
尝试从存储库中获取两个修订版本,然后使用 Word 进行比较。
在 Windows 版本的 Word 中,这甚至可以配置到 TortoiseSVN 中 - 您可以选择一个 DOC 文件的 2 个版本进行比较,然后 Tortoise 会以就绪比较模式打开 Word。我猜这是通过 OLE 或命令行开关完成的。
在 Mac 中,我不知道有类似的东西,但如果偶尔需要,您应该能够“手动”解决。