38

我最近一直在玩弄,git然后hg突然我想到这种东西对文件很有用。

我有一个文档,我在 DOCX 中编辑并导出为 PDF。我尝试同时使用githg对其进行版本控制,结果发现hg您最终只跟踪二进制文件,而差异化没有意义。虽然git我可以有意义地区分 DOCX(还没有尝试过 PDF),但我想知道是否有比我现在做的更好的方法。(理想情况下,不必让 Word 进行比较将是最好的解决方案。)

4

7 回答 7

15

这里有两个不同的概念——一个是“版本控制系统能否对文件的内容做出一些智能判断?” - 以便它可以仅存储修订之间的增量信息(并执行诸如将责任分配给文件的各个部分之类的事情)。

另一个是“我是否有一个文件比较工具,它对我在版本控制系统中拥有的文件类型很有用”。版本控制系统往往带有不如专用替代品的文件比较工具。但它们几乎总是可以链接到更好的差异程序 - 无论是针对所有文件类型还是特定文件。

因此,通常使用 Beyond Compare 作为通用比较工具,而 Word 作为专用 Word 文档比较器。

不同的版本控制系统在人们认为它们处理“二进制文件”的能力方面存在差异,但这通常与处理大文件和提供排他锁定有关,与文件比较有关。

于 2010-07-21T11:13:35.113 回答
8

http://tortoisehg.bitbucket.io/包含一个名为 docdiff 的插件,它集成了 Word 和 Excel diff'ing。

于 2010-09-22T01:37:27.950 回答
5

您可以使用 Beyond Compare 作为 hg 的外部差异工具。添加/更改您的用户 mercurial.ini 为:

[extdiff]
cmd.vdiff = c:/path/to/BCompare.exe

然后获取 docx 的 Beyond Compare文件查看器规则

现在您应该可以在 Beyond Compare 中比较两个版本的 docx。

于 2010-09-22T01:15:49.433 回答
4

仅针对 docx,我在这里编译了多个地方的说明:https ://gist.github.com/nachocab/6429893

# download docx2txt by Sandeep Kumar
wget -O docx2txt.pl http://www.cs.indiana.edu/~kinzler/home/binp/docx2txt

# make a wrapper 
echo '#!/bin/bash
docx2txt.pl $1 -' > docx2txt
chmod +x docx2txt

# make sure docx2txt.pl and docx2txt are your current PATH. Here's a guide
http://shapeshed.com/using_custom_shell_scripts_on_osx_or_linux/
mv docx2txt docx2txt.pl ~/bin/

# set .gitattributes (unfortunately I don't this can't be set by default, you have to create it for every project)
echo "*.docx diff=word" > .git/info/attributes

# add the following to ~/.gitconfig
[diff "word"]
    binary = true
    textconv = docx2txt

# add a new alias
[alias]
    wdiff = diff --color-words

# try it
git init

# create my_file.docx, add some content

git add my_file.docx

git commit -m "Initial commit"

# change something in my_file.docx

git wdiff my_file.docx

# awesome!

它在 OSX 上运行良好

于 2013-09-04T12:44:50.663 回答
4

本文概述了使用Pandoc的 Docx 解决方案, 而这篇文章概述了使用pdf2html的 PDF 解决方案。

于 2015-01-28T15:36:57.187 回答
2

如果您碰巧使用 Mac,我编写了一个 git merge 驱动程序,它可以使用 Microsoft Word 并跟踪更改以合并和显示 Word 可以读取和写入的任何文件类型之间的冲突。

http://github.com/jasmas/wordMerge

我说“如果你碰巧使用 Mac”是因为我编写的驱动程序使用 AppleScript,主要是为了完成这项任务。

在项目中添加一个 vbscript 版本会很好,但目前我没有用于测试的 Windows 环境。任何具有一些基本脚本知识的人都应该能够看看我在做什么,并在 vbscript、powershell 或 Windows 上的任何东西中复制它。

于 2014-02-10T19:08:35.823 回答
1

我在 Windows 上将 SVN(是的,在 2020 年 :-))与 TortoiseSVN 一起使用。它具有比较 DOCX 文件的内置功能(它以屏幕分为四个部分的模式打开 Microsoft Word:更改后的文件、更改前的文件、突出显示的更改和更改列表)。下面的屏幕截图(对不起波兰语版的 MS Word)。我还检查了 TortoiseGIT,它也有这个功能。我读过 TortoiseHG 也有。

使用 Microsoft Word 和 TortoiseSVN 比较文件更改的屏幕截图

于 2020-02-02T20:32:47.713 回答