2009-03-03 30 views
24

我发现了一些类似的问题(hereherehere),询问如何将文档存储到版本控制中。我有一个更具体的要求和一般问题。具体要求是我想要使用Git。更普遍的问题是,Git应该如何存储文档(用于设计,测试,项目的一般实践,技巧等)?更广泛地说,应该存储什么文件?版本控制中应存储哪些文档以及应如何存储它们?

我能想到的几种方法:

  1. 字/打开Office文档。新的Office Word具有docx格式,可以将文档压缩,但它也具有解压缩的XML格式,可用于在Git中有效存储差异。虽然差异功能仍然被破坏,因为XML只是在一条线上挤压。这并不比将二进制文件存储到Git中更好。
  2. Wiki。那里有什么分布式维基?它就像某种乳胶的东西,其中文档被编写和编译/视为一个wiki。
  3. 乳胶 - 但从使用它的文件,我发现它很不适合文件。是否有相同的文档? (如何编写手册页?)
  4. 纯文本格式,但由于缺少图表而导致缺少图表,因此缺少另一点。

应该如何存储视觉?首先他们应该组成什么?我正在开发一个Linux环境,但该项目中的其他一些参与者在Windows上。什么样的跨平台解决方案与Visio类似?当然,它不应该创建二进制文件存储到Git中。那么这将如何与文档配合? (例如,与编译时Latex可以参考其他图表类似)。

+0

SVG实际上对于大多数的视觉效果工作得非常好,如果你很小心,制作diff甚至可以合理可读。 – naught101 2013-04-10 00:53:36

回答

1

Git可以像处理文本文件一样处理二进制文件。 Git并没有明确存储差异,而是在存储库中存储以前的文件修订版本。然后压缩存储库对象以节省空间。无论何时你问他们,差异都会随时重建。

因此,只考虑磁盘空间,在Git中存储未压缩的XML Office文档和存储同一文档的压缩版本之间几乎没有区别。唯一的区别是Zip与Git选择使用的任何压缩方式的相对性能。

+3

其实,我认为git会做一个二进制比较(在创建pack文件时)如果储蓄足够大...... – 2009-03-03 23:12:35

+0

啊,你说得很对,我没有考虑过pack文件的结构 – 2009-03-03 23:52:44

2

对于Word文档,请尝试使用RTF(富文本格式),它基本上是文本。另一种可能性是HTML。他们是文字,所以你应该能够对他们做出差异。

大多数Wiki都是分布式的,它们是为协作而设计的。我认为你确实在问是否有托管解决方案,或者你是否需要管理它们。看看http://www.atlassian.com/

1

大多数文档格式在源代码控制方面播放的不是很好。几乎你列出的所有内容都是有效的二进制格式或不易区分的卷积标记。只要你只是想要文件的版本,不关心差异,使用任何你喜欢的格式。我更喜欢Microsoft Word文档,因为您可以使用内置的更改跟踪和评论系统来跟踪文档之间的增量。

至于要存储什么文件,我会建议存储任何你稍后会用到的东西。你应该离开什么文件来继续项目?哪些文件有助于让新人加快速度?这意味着规范,但不包括像burndown charts这样的文档。

要回答您的问题的wiki部分,请查看DokuWiki。它将所有内容存储在文本文件中,以便将其添加到源代码管理系统中非常容易。

+0

第一个两句话是无稽之谈。如果你保持你的线条使用合理(每行一句,在可能的情况下单独标记线条),那么*大多数*纯文本格式(latex,markdown,RST,HTML)会给你完全可读的差异。特别是Git有一些工具可以使它更好:word-diffs和[diff-highlight]脚本](http://stackoverflow.com/questions/1721738/using-diff-or-anything-else-to-get-字符级的Diff-之间的文本,文件/ 15635889#15635889)。 – naught101 2013-04-10 00:58:23

1

我刚刚生活过一个事实,即我无法通过版本控制系统跟踪二进制文件格式的变化,但我仍然使用它,因为它很有用。请注意,通常大多数这些类型的文件是将发布的工作产品(用户指南,文档等)

对于像需求和初始设计这样的早期项目工件,我倾向于使用文本文档 - 不是因为我可以跟踪更改,但是因为我喜欢使用我的IDE。

我从来没有真正被“咬”,因为在版本控制中更改不能“扩散”。关于更改重要二进制文档的提交意见和其他文档指南通常弥补了缺乏可见性 - 因为如果您寻找它,还有另一条线索。

我同意这不是理想的,但我不认为这是真的值得烦恼。

也许我只是习惯了一组文件的想法,我会尽可能多地跟踪我想要的文件。

我在版本控制方面做了很多工作,但也使用缺陷跟踪来处理一些暂时性的lifespans。

6

我的公司将Word文档存储在SVN中,并通过TortoiseSVN访问它们。

Tortoise使用Word内置的变化跟踪功能来向您显示两个修订版的“差异”。

这工作得很好,但需要Windows和Word。

编辑:

你也许可以得到这个用git工作压力太大。如果你安装了TortoiseSVN,然后看看%PROGRAMFILES%\TortoiseSVN\Diff-Scripts\,你会看到乌龟正在做什么。

如果你使用Git,我假设你1337足以破解它为你:)

8

在决定你选择文件格式,你应该确保团队成员的工作(或者是你单独工作?)可以很好地处理格式本身。

  1. 存储不是问题,因为能够看到版本之间的差异和合并。根据我的经验,没有什么比在任何文本编辑器中可以自由编辑的文本格式更胜一筹。这不包括HTML和任何基于XML的格式。 DocBook是一个几乎不可用的例外。

  2. 一个很好的wiki,可以使用任何流行的版本控制系统,并以分布式方式设置,是IkiWiki。使用IkiWiki,标记解析是在插件中完成的,因此您可以在每个文档的基础上选择输入格式。 “默认”,Markdown非常接近纯文本格式。

  3. 如果您对使用LaTeX不满意,请勿使用它。我认为这是不适合做快速笔记。手册页以nroff编写,但很多人使用其他格式,例如POD

一些努力成为Visio替代品的项目是Kivio(KDE)和Dia(Gtk/Gnome)。我没有使用Visio本身,所以我不能评论他们的功能集。这可能取决于你想创建什么样的视觉效果/图表。 UML?流程图?

相关问题