【发布时间】:2010-03-17 11:26:53
【问题描述】:
是否可以使用Mercurial 版本控制来跟踪 Word 或 PDF 文件? 有什么限制或问题吗?
【问题讨论】:
是否可以使用Mercurial 版本控制来跟踪 Word 或 PDF 文件? 有什么限制或问题吗?
【问题讨论】:
您将能够对 MS Word 文档进行有意义的比较。
如果您安装了 TortoiseHg 并且 你已经建立了一个存储库, 右键单击您要使用的文件 想要检查差异。
在上下文菜单中,单击 TortoiseHg > 视觉差异。
在“视觉差异”对话框中,选择 docdiff,而不是 kdiff3。
双击 Visual 中的文件 差异对话框。
MS Word 将打开一个比较结果 Word 文档,该文档将文档的当前版本与以前版本之间的差异显示为修订。
【讨论】:
是的,但是您当然无法以任何有意义的方式进行区分。因此,这些文件在合并期间将被视为二进制文件。
Mercurial 是 perfectly capable 的跟踪二进制文件:
Mercurial 通常不会 关于文件内容的假设。因此, Mercurial 中的大多数东西都可以正常工作 任何类型的文件。
无论文件类型如何,Mercurial 都会存储二进制差异。 PDF/Word 文件的问题在于,对它们稍加改动通常会导致它们在磁盘上的二进制表示存在巨大差异。 .docx 文档以压缩 xml 的形式存储,因为压缩存档中的单个翻转位会导致 zip 存档看起来完全不同。
如果您不将存储库扩展得过大,使用 Mercurial 可能不会遇到任何问题。
【讨论】:
注意建议
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”后面的参数传递。参考文献https://www.mercurial-scm.org/wiki/ExtdiffExtension 声明的地方:
每个自定义 diff 命令可以包含两个部分:“cmd”和“opts”部分。 cmd.xxx 选项定义了将要运行的可执行程序的名称,而 opts.xxx 定义了一组命令行选项,这些选项将插入到程序名称和要区分的文件/目录之间的命令中
【讨论】:
对于 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 倾向于包含图像,我使用 appearance 比较器(opts 中的-a)。如果您主要是文本,则可以改用-w。
它默认为 highlighting 来显示差异。我更喜欢 Src Xor Dest 选项来显示差异,但我认为没有 cmd 行选项。
【讨论】: