我最近一直在玩git
和hg
,然后我突然意识到这种事情会对文档很有用。
我有一个文档,我在DOCX中编辑并导出为PDF。我尝试使用git
和hg
进行版本控制,然后使用hg
结果只跟踪二进制文件并且差异没有意义。虽然使用git
我可以有意义地区分DOCX(尚未尝试使用PDF)但我想知道是否有更好的方法来实现它而不是我现在正在做的事情。 (理想情况下,不必将Word留给diff将是最佳解决方案。)
- Ashish Gandhi
答案 0 :(得分:14)
这里有两个不同的概念 - 一个是“版本控制系统可以对文件内容做出一些明智的判断吗?” - 这样它就可以在修订版之间存储增量信息(并做一些事情,比如将责任分配给文件的各个部分)。
另一个是'我有一个文件比较工具,它对我在版本控制系统中的文件类型很有用'。版本控制系统往往带有文件比较工具,这些工具不如专用替代品。但它们几乎总是与更好的差异程序相关联 - 对于所有文件类型或特定文件类型。
因此,通常使用Beyond Compare作为一般比较工具,将Word作为专用的Word文档比较器。
不同版本控制系统的不同之处在于人们如何看待它们处理“二进制文件”,但这通常与处理大文件和提供独占锁定一样多,因为它与文件比较有关。
答案 1 :(得分:6)
http://tortoisehg.bitbucket.io/包含一个名为docdiff的插件,它集成了Word和Excel diff'ing。
答案 2 :(得分:4)
你可以使用Beyond Compare作为hg的外部差异工具。添加/更改您的用户mercurial.ini为:
[extdiff]
cmd.vdiff = c:/path/to/BCompare.exe
然后为docx获得Beyond Compare file viewer rule。
现在你应该能够在Beyond Compare中比较两个版本的docx。
答案 3 :(得分: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上运行良好
答案 4 :(得分:4)
答案 5 :(得分:2)
如果您碰巧使用Mac,我编写了一个git合并驱动程序,可以使用Microsoft Word和跟踪的更改进行合并,并显示任何文件类型之间的冲突Word可以阅读&写。
http://github.com/jasmas/wordMerge
我说'如果你碰巧使用Mac',因为我写的驱动程序使用AppleScript,主要是为了完成这项任务。
将vbscript版本添加到项目中会很不错,但目前我还没有用于测试的Windows环境。任何具有一些基本脚本知识的人都应该能够看看我正在做什么,并在vbscript,powershell或Windows上的任何内容中复制它。
答案 6 :(得分:1)