Git(或Hg)插件,用于处理Microsoft Word和/或OpenOffice文件

有没有人遇到过一个Git或Hg插件,用于“有意义”的差异/合并/分支OpenOffice或Microsoft word文件。

我知道我可以签入.doc文件,但是Git和Hg都将它们视为二进制的斑点。 我希望能够对文件的文本进行所有(或至less很多)正常的基于修订的操作。

是的,我知道我应该使用Latex或在RTF之间来回转换文件。 我试图pipe理技术人员和“pipe理人员”之间的协作,我只是在寻找一个更“原生”的解决scheme。

这和我在Biostar上的问题有关: http : //biostar.stackexchange.com/questions/1749/writing-collaboration-with-source-control-and-microsoft-word

谢谢。

怎么样:

  1. 用XML保存Word文档。
  2. 提交你的XML文件。
  3. 使用外部XML差异工具进行比较 例如:

    $ git difftool -t xmldiff c3d293 498571

将XML文件转换为每行一个元素应该使签入过程高效运行,并允许外部XML差异工具快速处理。

参考文献:

我能够想出一个很好的技巧,也可以在Open Office文件,PPT等上使用:

http://xcafebabe.blogspot.hu/2012/09/sexy-comparison-of-word-documents-with.html

下面是一个显示结果的截图:

在这里输入图像说明

如果你在MS Windows上,使用TortoiseGit 。 我只需要经历这个痛苦的经历,TGit,虽然不雅,但也带来了一些痛苦。 其他几点:

  • 令人惊讶的是,git diff和gitk都做了相当不错的工作,至less可以 .docx之间的差异可视化 (不确定.doc,但我会认为它是相同的)。 这对于提交时快速扫描差异很有好处。
  • 就快进和自动化而言,你完全没有运气。 不幸的是,我还没有find一个可以处理这个问题的工具(尽pipe我喜欢上面的XML思想),所以你将不得不手动进行所有的合并。
  • 微软Word(MS Word)有一个体面的,如果有缺陷的合并工具。 AFAIK,它只能进行双向合并( 即: X0 + dX = X1 ),而不是在版本控制中比较常见的三合并或二合并, 即: X0 + dX1 + dX2 = X1 。 你可以使用这个工具解决合并冲突,但是会有一些合适的工作 – 检查每个分支,将HEAD导出为未跟踪的版本等等。

     X0 = *.BASE.docx, X0 + dX1 = *.LOCAL.docx and X0 + dX2 = *.REMOTE.docx 
  • 幸运的是,这正是TGit(和TSVN)所做的。 我不幸的是,避免rebase因为如果你必须重播连续几个变化,它可以是非常累人的,但merge短文件是好的,只是不是很好。

回答JudoWill的问题 – Workshare可能是律师使用的主要工具。

我在这里编译了多个地方的说明: http : //bit.ly/17LaxVY

 # 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 ci -m "Initial commit" # change something in my_file.docx git wdiff my_file.docx # awesome! 

它在OSX上效果很好

律师事务所拥有非常强大的系统。 一个人不相信文档中的修订历史logging(因为它是从外部获取的),而是进行自己的比较,并可以提供增量。 如果这就是他们真正需要的东西,那么最好把购买的东西比把一个包装到git或者mercurial中,这对他们来说永远不会有用。

对不起,听起来像悲观主义者,但更有可能的技术人员将使用(而抱怨)价格过高的商业工具,而不是办公室人员会使用混帐或mercurial任何水平的满意度。

使用svn(不是git或hg,但是你可以有一个网关),Ooo有一个扩展来处理未压缩的XML文件,请参阅我有关类似问题的回答。 顺便说一句,如果你看看插件代码,并使其意识到而不是svn,请让我知道! 😉

Git 1.6.1或更高版本现在提供了textconvfunction,它允许使用任意命令在差异之前将文件转换为文本。

检查这也是: https : //gist.github.com/17twenty/4985374