Mercurial和Word或PDF文档

时间:2010-03-17 11:26:54

标签: pdf mercurial ms-word

是否可以使用Mercurial版本控制来跟踪Word或PDF文件? 有任何限制或问题吗?

4 个答案:

答案 0 :(得分:56)

能够为MS Word文档执行有意义的差异。

  • 如果您安装了TortoiseHg并且 你已经建立了一个存储库, 右键单击您的文件 想检查差异。

  • 在上下文菜单中,单击TortoiseHg>视觉差异。

  • 在“Visual Diffs”对话框中,选择 docdiff ,而不是kdiff3。

  • 双击Visual中的文件 Diffs对话框。

MS Word将打开比较结果Word文档,该文档将显示当前版本的文档与之前版本之间的差异作为跟踪更改。

答案 1 :(得分:7)

是的,但当然你无法以任何有意义的方式进行分歧。因此,在合并期间,文件将被视为二进制文件。

Mercurial是追踪二进制文件的perfectly capable

  

Mercurial通常不会   关于文件内容的假设。从而,   Mercurial的大部分工作都很好   任何类型的文件。

无论文件类型如何,Mercurial都会存储二进制差异。 PDF / Word文件的问题是它们的一些变化通常会导致它们在磁盘上的二进制表示产生巨大差异。 .docx文档存储为压缩的xml,因为压缩存档中的单个翻转位会导致zip存档看起来完全不同。

如果您的存储库不会太大,那么使用Mercurial可能不会遇到任何问题。

答案 2 :(得分:6)

小心建议的

cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a $local $other

$ local和$ other在extdiff上下文中没有任何意义。文字字符串“$ local”和“$ other”,而不是文件名,将传递给“diffpdf.exe”。我发现这很难。

cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a

将起作用,两个文件将作为“-a”后面的参数传递。 C.F. https://www.mercurial-scm.org/wiki/ExtdiffExtension说明:

  

每个自定义diff命令可以有两个部分:'cmd'和'opts'部分。 cmd.xxx选项定义将运行的可执行程序的名称,opts.xxx定义一组命令行选项,这些选项将插入到程序名称和文件/目录之间的命令以进行diff

答案 3 :(得分:1)

对于Pdf文件,我能够获得GPL许可DiffPDF,以便在pdf文件的修订版之间进行比较。

我将以下内容添加到我的mercurial.ini文件中:

[extdiff]
cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a $local $other

[diff-patterns]
**.pdf=pdfdiff

现在当我点击tortoisehg中的pdf文件(或在cmd行使用hg pdfdiff)时,它会打开两个文件进行比较。由于我的pdf往往包含图片,因此我使用外观比较器(-a中的opts)。如果您主要使用文字,则可以使用-w代替。

默认为突出显示以显示差异。我更喜欢 Src Xor Dest 选项来显示差异,但我不认为有一个cmd行选项。