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

用于处理Microsoft Word和/或OpenOffice文件的Git(或Hg)插件,git,version-control,plugins,mercurial,openoffice.org,Git,Version Control,Plugins,Mercurial,Openoffice.org,有没有人遇到过Git或Hg插件,用于OpenOffice或Microsoft word文件的“有意义”差异/合并/分支 我知道我可以“签入”.doc文件,但Git和Hg都将它们视为二进制blob。我希望能够对文件的文本执行所有(或至少许多)基于修订的正常操作 是的,我知道我应该使用Latex或者在RTF之间来回转换文件。我只是在寻找一个更“本土”的解决方案,因为我试图管理技术人员和“管理人员”之间的协作 这与我关于Biostar的问题有关: 谢谢。律师事务所有非常强大的系统来完成这项工作。一个是

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

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

是的,我知道我应该使用Latex或者在RTF之间来回转换文件。我只是在寻找一个更“本土”的解决方案,因为我试图管理技术人员和“管理人员”之间的协作

这与我关于Biostar的问题有关:


谢谢。

律师事务所有非常强大的系统来完成这项工作。一个是不信任文档中的修订历史(因为它是外部来源的),而是自己进行比较,并可以提供增量。如果这是他们真正需要的,你最好买它,而不是在git或mercurial中放一个永远不会对他们有用的包装器

很抱歉听起来像是悲观主义者,但技术人员更可能会使用(同时抱怨)价格过高的商业工具,而不是办公人员会使用git或mercurial达到任何程度的满意度。

使用svn(不是git或hg,但你可以有一个网关),有一个用于Ooo处理未压缩XML文件的扩展,关于类似的问题,请参见。 顺便说一句,如果你看了插件代码,让它是hg-aware而不是svn,请让我知道!;-)

那么:

  • 用XML保存Word文档
  • 提交XML Word文件
  • 使用外部XML差异工具进行差异化。例如:

    $git difftool-t xmldiff c3d29498571

  • 将XML文件转换为每行有一个元素应该可以使签入过程高效地运行,并允许外部XMLDiff工具快速处理

    参考资料:


    如果您使用的是MS Windows,请使用。我只是经历了这段痛苦的经历,虽然不雅可以减轻一些痛苦。还有几点:

    • 令人惊讶的是,git diff和gitk至少在可视化.docx之间的差异方面都做得相当好(不确定.doc,但我认为是相同的)。这对于在执行提交时快速扫描差异非常有用
    • 就快进和自动合并而言,您完全不走运。不幸的是,我还没有找到一个能够处理这个问题的工具(尽管我喜欢上面的xml思想),所以您必须手动执行所有合并
    • 微软Word(MS Word)有一个不错的合并工具,如果有缺陷的话。因此,它只能进行双向合并(即:
      X0+dX=X1
      ),而不能进行在版本控制中更常见的三向或双亲合并(即:
      X0+dX1+dX2=X1
      )。您可以使用此工具解决合并冲突,但需要做一些正确的工作-签出每个分支,将HEAD导出为未跟踪的版本,等等

      X0 = *.BASE.docx,
      X0 + dX1 = *.LOCAL.docx and
      X0 + dX2 = *.REMOTE.docx
      
    • 幸运的是,这正是TGit(以及TSVN)所做的。不幸的是,我会避免
      rebase
      ,因为如果您必须在一行中重播多个更改,这可能会非常累人,但是对于短文档来说
      merge
      很好,只是不太好


    我想出了一个很好的技巧,它同样适用于开放式办公文件、PPT等:

    以下是演示结果的屏幕截图:


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

    我在这里为多个地方编写了说明:


    它在OSX

    Git 1.6.1或更高版本上运行得非常好。现在,它提供了一些功能,允许在扩散之前使用任意命令将文件转换为文本


    同时选中此项:

    不是答案:使用wiki。如果您需要对其进行版本设置/随身携带,请查找支持git/hg的wiki和web服务器(技术人员可以使用wiki文件/本地副本,管理人员使用普通的web前端)管理层拒绝使用除Microsoft Word之外的任何东西。谷歌文档几乎是一种可能,但是他们被其他人看到他们的手稿的想法所阻碍。我没有告诉他们,在发送电子邮件的过程中,有超过20台计算机也“看到”了他们的手稿,因为害怕被还原回纸质系统;)你也许应该告诉他们。或者谷歌文档或者一个设置正确的维基如何比到处转发未加密的电子邮件更安全。充其量他们会听你的,让你把事情做得更好。在最坏的情况下,你仍然会遇到同样的问题;由于能够将形式与内容分离,因此在文本上进行协作变得容易得多。当然,因为它是源代码,所以使用git进行版本控制很简单。。。我希望他们使用Word(或类似的东西),然后我希望使用插件来促进合并。我在一家学术机构工作,所以我怀疑自己是否能负担得起定制解决方案。出于好奇,你有“律师事务所”系统的名称或链接吗?屏幕截图+1。这正是TGit所做的!这就是我在中所说的,但是如果您希望能够直接从git调用它,或者如果您没有Tortoisexx,那么您只需要创建一个新的diff/merge工具。麦克·福克是干什么的?如果您有TGit,那么只需使用浏览器扩展来区分、合并等。请注意,如果您使用git merge/rebase,它仍然会失败,并且您仍然需要手动合并word文档,这是最初的目标。还在看。NB xml不起作用。酷,谢谢澄清!事实上,我只是想安装TGit:-)在我看来,这是最好的答案-链接的博客文章允许您使用TGit的word diffing脚本,而无需安装TGit(安装msysgit会干扰Cygwin的git),最好的是
    # 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!