如何最好的版本设计文件?

时间:2009-02-02 09:57:16

标签: svn version-control documentation

在讨论办公室文件的版本之前,已经就SO(herehere)进行了一些讨论,但我认为我的问题仍然有点不同。

我的编程项目以一个项目文件夹开头,该文件夹是空的,除了一个名为“设计文档”的子文件夹,它包含项目功能规范的草稿,后来扩展为包含API规范或其他任何需要的内容。

当然,我也会将这些文件检入SVN。 我正在寻找的是良好的文件格式和策略,以便在整个版本控制,差异化和合并过程中发挥良好作用。例如,我认为最好将字处理器文件存储为XML或者这些差异对于人类读者来说是难看和无用的?这就是我想做的事情:

  • 差异和合并文本文档(必须有OOo,很好的MS Word)
  • diff(可能合并,虽然这可能会在概念上变得困难)架构图,如UML图。我当时认为这些文件可以是独立的XML / SVG文件,并且可以链接到文本文档中,但我对这些文档如何工作以确定这是否真的有用是不够的。
  • 在文本文档中显示自动更新的修订号(可能包含svn:keywords

有没有人做过这种事情?我可能会查看有关OOo文件等的大量文档和教程,但我也非常感谢指向这些文档和教程,我主要是在寻找在实践中有效或无效的事情的第一手资料。


编辑:为了确定,此处不涉及“非技术用户”。它只是程序员,文档仅用于编程项目。可能会发布PDF,但这只是另一个构建工件,没有任何必须版本化。

但是,我们确实想要使用Tex等。我知道它很棒,而且我只是不能为一个简单的文本文档而烦恼。我们必须学习它,正确获取所有额外的软件包,将Tex-to-PDF渲染添加到我们的构建过程等等。这就像是一个针对两个或三个文档的小编程项目。如果有的话,我宁愿使用HTML,但对于我来说,文字处理器似乎仍然是一个不错的选择,除了我想要很好的版本。

还有另外一个想法:是否有像OOo或其他方式的SVN插件?或者甚至,为OOo添加SVN支持需要什么?类似于“文件”菜单中的“同步”选项和“修订号”文本字段。我的意思是,这不会成为我们业务的一部分,但它会很酷,毕竟我是老板。

7 个答案:

答案 0 :(得分:4)

WYSIWYG编辑器(Word,OpenOffice)通常没有看到任何其他人应该弄乱他们的文件的原因,因此找到一个非技术用户可以使用的编辑器版本控制系统是不可能的。例外:git有一个filter which can look into OpenOffice files。不过,我不确定你是否可以使用关键字扩展。

我建议您为用户使用wiki和一周的培训如何使用它。它可以解决您的所有问题(某些维基甚至可以检入版本控制系统)。正如我在different post中所说,唯一的障碍是用户需要几天时间才能适应这个想法。在那之后,他们会喜欢它。

答案 1 :(得分:3)

如果可能,除了在版本控制下呈现的PDF之外,我还保留所有“原始”文件的文本格式(即XML / DocBook,纯文本,LaTeX)。此外,我尝试使用Subversion存储库修订号作为文档的版本号。

如果您不能使用自动修订号(即在Word文档中),我建议使用上次修改的日期。确保使用上次编辑的日期而不是当前日期宏,因为当前日期宏将填写打印文档时的任何日期,这可能不是您想要的。另一种方法当然是使用传统的增量版本号,但根据我的经验,当只看到一个数字时,人们通常很难知道哪个版本是最新版本。人们通常更了解旧日期。

将每个页面的日期和/或修订号作为页眉/页脚的一部分也是一个很大的优点,这样就可以避免人们混淆桌面上不同的版本......

答案 2 :(得分:2)

正如Aaorn Digulla所说,维基是一个好主意。您必须意识到,实现您想要的唯一方法是重新考虑整个文档策略。

没有软件可以解决不兼容的文件格式问题,也无法比较不同的版本。您现在使用的工具是错误的工具。改变你的工具集和你的思维方式会变得艰难,不舒服,而且可能很昂贵,但这是能够达到你想要的成本,最终会为自己付出10倍的代价。

回想一下您最初使用架构文档,UML图表,甚至是计划Word文档这么简单的问题。那些工作到目前为止,他们已经把你带到了这么远,但唯一真正的前进方向是转向专为您所需的工具而设计的工具 now

注意:最终的解决方案可能不是维基,但它绝对不是你现在使用的。你需要探索一下并尝试一些事情。

答案 3 :(得分:2)

wiki在这里似乎是一个好主意,但如果这不合适,您可能会考虑将Sphinx(或类似)与ReStructured Text一起使用。

虽然这也是一个“小编程项目”,它会为你提供HTML作为输出,同时保持差异漂亮和可读。我相信,设置它不会比LaTeX更省力;学习曲线会小得多;如果您将来需要LaTeX和PDF,它就在那里等着您。

答案 4 :(得分:2)

用于SVN的TortoiseSVN客户端(Windows)对Open Office有足够的了解,当你要求它进行区分时,一旦它掌握了必要的版本,就会打开Office,同时打开两个文档,显示差异。我经常使用它。我想有更好的解决方案,对于Mac / Linux / OS / 360或其他类似的东西,但对于这个非常技术性的用户,因为他想要他的午餐经常感觉非常技术,TortoiseSVN(http://tortoisesvn.tigris.org/)提供

答案 5 :(得分:0)

OOo的问题是文件格式实际上是一个zip压缩文件组(尝试将文件扩展名更改为.zip或.7z)。这使得难以进行差异化。

我一直在关注LaTex和DocBook,但建立一个样式模板是非常困难的。这是所有教程都很难理解的难点。

所以基本上我已经放弃了从文档中获取有意义的差异。它被检入二进制blob。

答案 6 :(得分:0)

我们在一些项目的文档中使用了wiki。它对每个条目都有很好的版本跟踪,但在文档级别没有,所以我们导出文档并检查它们以及基线。