散文的版本控制

dgo*_*rur 8 git version-control text

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

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

有谁知道有人已经这样做了吗?还是其他任何选择?

谢谢!

Kei*_*son 5

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

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

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

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

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