似乎有人必须已经这样做了,但我找不到我正在寻找的最终产品。
对文本使用版本控制系统很费力。你需要在每个句子的末尾添加换行符,甚至在长句中。看一下git源代码,似乎通过更改一些检查'\n'
的例程,应该可以让git(或任何其他版本控制系统)匹配'\n'
或模式{{1 }}。然而,这是一项需要精心完成的任务,或者我可以看到事情非常糟糕。
有人知道有人已经这样做了吗?还是其他任何替代方案?
谢谢!
答案 0 :(得分:3)
任何版本控制系统都应该能够处理散文。问题是如何有效地做到这一点。
git diff
命令使用类似diff -u
的内容来显示文件的两个版本之间的差异。如果文件由具有很长行的文本(即'\n'
个字符之间的许多字符)组成,则可能难以有意义地显示差异;它可能会显示两个5000个字符的行,只有一个字符更改。
但这并不一定意味着git
存储文件的方式。我并不熟悉git的内部存储格式,但我的理解是它在二进制文件方面做得相当不错,二进制文件可能有数兆字节的数据而没有'\n'
个字符。
请注意,某些旧版本控制系统(SCCS,RCS)可能会逐行存储版本之间的差异。但即使对于这样的系统,在最坏的情况下你将存储每个版本的完整副本以及一些开销。系统应该仍然能够正常工作。
请注意,git diff --word-diff
至少应部分解决比较版本的问题。