SVN或Mercurial版本控制的Word文档

4
据我所知,微软在他们最新的office版本中采用了一种基于xml的表示方法。如果这是真的,那么我认为版本控制应该可以工作,尽管你显然需要解决与旧版本的嵌入式更改的冲突。
<<<<<<

======

>>>>>>

在加载Word文档之前,在其中打上标记。

这个问题提到了这个问题,但似乎已经默认版本控制不能在Word中使用,我想知道为什么?

文档跟踪是否适用于版本控制(例如Subversion)?

7个回答

7

对于Mercurial,有一个名为zipdoc扩展的工具,它似乎可以处理像基于XML的Word文档这样的压缩文件,通过在内部以未压缩的方式存储它们来获取有意义的增量并以有意义的方式合并它们。我没有测试过它,但听起来像是你正在寻找的东西。


3
结论是,虽然大多数版本控制系统(包括Mercurial)确实可以处理二进制文件,但它们在差异比较和合并方面表现不佳。
Word文件的本质是二进制的。是的,Office的最新版本已经转换为“Office Open XML”格式,其中包含XML,但它们仍将整个内容包装在zip文件中,这意味着它仍然是二进制的(是的,我知道所有文件实际上都是二进制的,你知道我的意思)。
现在,许多版本控制系统,包括Mercurial和Subversion,都可以通过提供可以执行此任务的外部合并工具来告诉它如何合并任何它认为是二进制的文件类型。
这基本上意味着,如果您可以找到一个程序,可以取两个Word文件,对其进行差异比较,并允许您协调差异,那么您就可以开始工作了。
如果您解压缩Word文件并对其内容进行版本控制,那么是的,您可能会遇到需要通过Mercurial解决的合并冲突,但是内容仍将以您自己没有编写的格式存在,因此协调困难的合并冲突可能不仅仅是困难,而且可能是不可能的。
简而言之,版本控制系统擅长存储二进制文件,但在差异比较合并方面表现不佳。
如果您从未需要进行差异比较或合并,则可以使用Mercurial或Subversion等版本控制系统,并且它们将非常好用。

2
新的格式实际上是基于XML的,但.docx文件本身实际上是一个zip文件。因此,最终它仍然是一个二进制文件...

太神奇了,我认为微软加入了所有无用的功能,而这个功能真的非常非常有用,但它却不存在。 - Dov

1

我想这取决于谁将使用这些文档。通常只有开发人员习惯使用版本控制系统,因此您可能会使那些只想通过共享驱动器访问的人的生活变得更加复杂。

另一方面,修订历史记录通常非常重要,我经常看到带有大量摘要的Word文档,列出所有更改,这似乎非常愚蠢。

我认为像Google Docs这样的云解决方案将来可能会填补这个空白。或者只是一个团队维基。通常,您正在交换一些更高级的Word功能,以获得更开放的共享体验,但Google Docs正在变得非常强大。


1

我会将用例放在首位。全世界有很多人需要工具来比较两个版本的同一份Word文档 - 但他们不是开发人员,而是例如律师。在我的律所客户中,文件发送给他们的客户并返回后会被修改,因此绝对需要进行基于文档的比较。他们可以使用内置的Word比较功能,或者第三方工具(例如WorkShare DeltaView作为行业标准之一)。这些工具还允许比较PDF文档。

这里的用例显然是内容驱动的:律师需要快速了解合同两个版本之间的差异。这两个版本都可以存储在文档管理系统中作为“版本”,或者在DeltaView的情况下,增量文件可以存储以供进一步审查。

对于开发人员来说,使用情况是什么?源代码控制系统意味着“源”控制,而不是“控制我项目中出现的所有东西”。我宁愿将与项目相关的文档(计划、规格、要求、电子邮件)存储在另一个存储库中,而不是在Mercurial中。 - 另一方面,在文档模板项目中,我经常使用Word文档或Word模板作为解决方案的一部分,当然这些文档是源代码 - 因此保存在存储库中。但是,迄今为止,可视化差异的需求相对较小,特别是如果您的注释很好(“版本1-初始化”,“版本2:在页眉中添加文本框”,“版本3:添加页脚信息”等)。


"有点太过关注“使用案例”的术语,这与问题无关,但这个要点很有用,这个单词确实有比较两个文档的能力。我之前并不知道,谢谢。如果 Word 有比较两个文档和选择其中的内容放入另一个文档的能力,那么这就是解决方案。" - Dov
1
源代码控制意味着能够同时编辑而不必担心可能的冲突,并具有一定的差异审查和合并能力。这个问题不是关于一个编程项目,而是关于一个协作文档项目,但我在这里提问是因为只有程序员了解这些工具。 - Dov
抱歉,当我阅读您的问题时,这并不清楚。有价值的资源是Shauna Kelly的主页(http://www.shaunakelly.com/topic/word/sharing)和Microsystems的WhitePaper(http://www.microsystems.com/resources/white-papers.php):请参阅有关Word中2007/2010比较功能和“常见嫌疑人”的文档,即其他供应商(Microsystems是其中之一)。 - domke consulting

1

回复这里阅读的各种观点或假设:

  • 是的,subversion在比较二进制文件方面表现很好。例如,对于一个有很多图片的30Mb文件的60个版本,只需要90Mb。
  • 是的,Tortoise SVN会自动调用本地的MSWord比较工具,因此可以在字符级别上查看任何两个版本之间的确切差异(包括格式)。
  • 考虑使用msWord跟踪更改功能而不是后验比较,这也可以跟踪移动、作者等信息。适用于不同的需求...
  • 是的,docx文件是一个带有xml文件的压缩目录。尝试使用zip实用程序或解压缩打开docx文件!
  • 如果您想进行关键字扩展,请考虑保存为XML而不是docx:

  • 将文件保存为.xml而不是.docx;虽然文件变得更大了(不再压缩),但是您可以通过svn压缩节省空间,svn压缩对文本比二进制文件更有效率。

  • 在word文档的属性中插入snv关键字(例如$Rev$)(使用右窗格中的文件-信息、属性)
  • 使用字段在您的文档中显示信息:插入-快速部件-文档属性,例如

那对我来说似乎有效。

Rodolphe


0

这取决于设置。

如果您想要跟踪更改的是短期文档,则使用Word内部控件。

否则,请使用SVN或Sharepoint或其他外部手段记录版本化文档。如果不这样做,您就有可能被任何人覆盖文件,并且所有版本信息都将丢失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接