散文的版本控制

时间:2011-10-14 22:46:56

标签: git version-control text

似乎有人必须已经这样做了,但我找不到我正在寻找的最终产品。

对文本使用版本控制系统很费力。你需要在每个句子的末尾添加换行符,甚至在长句中。看一下git源代码,似乎通过更改一些检查'\n'的例程,应该可以让git(或任何其他版本控制系统)匹配'\n'或模式{{1 }}。然而,这是一项需要精心完成的任务,或者我可以看到事情非常糟糕。

有人知道有人已经这样做了吗?还是其他任何替代方案?

谢谢!

1 个答案:

答案 0 :(得分:3)

任何版本控制系统都应该能够处理散文。问题是如何有效地做到这一点。

git diff命令使用类似diff -u的内容来显示文件的两个版本之间的差异。如果文件由具有很长行的文本(即'\n'个字符之间的许多字符)组成,则可能难以有意义地显示差异;它可能会显示两个5000个字符的行,只有一个字符更改。

但这并不一定意味着git 存储文件的方式。我并不熟悉git的内部存储格式,但我的理解是它在二进制文件方面做得相当不错,二进制文件可能有数兆字节的数据而没有'\n'个字符。

请注意,某些旧版本控制系统(SCCS,RCS)可能会逐行存储版本之间的差异。但即使对于这样的系统,在最坏的情况下你将存储每个版本的完整副本以及一些开销。系统应该仍然能够正常工作。

请注意,git diff --word-diff至少应部分解决比较版本的问题。