Git 散文的版本控制

Git 散文的版本控制,git,version-control,text,Git,Version Control,Text,看来一定有人已经这么做了,但我找不到我想要的最终产品 对文本使用版本控制系统是很费力的。在每个句子的结尾,甚至在长句中间,都需要换行符。查看git源代码,似乎通过更改一些检查'\n'的例程,应该可以让git(或任何其他版本控制系统)匹配'\n'或模式'\\.\s'。然而,这是一项需要认真完成的任务,否则我会看到事情变得非常糟糕 有人知道有人已经这样做了吗?还有其他选择吗 谢谢 任何版本控制系统都应该能够处理散文。问题是它能如何有效地做到这一点 gitdiff命令使用类似于diff-u的内容来显示

看来一定有人已经这么做了,但我找不到我想要的最终产品

对文本使用版本控制系统是很费力的。在每个句子的结尾,甚至在长句中间,都需要换行符。查看git源代码,似乎通过更改一些检查
'\n'
的例程,应该可以让git(或任何其他版本控制系统)匹配
'\n'
或模式
'\\.\s'
。然而,这是一项需要认真完成的任务,否则我会看到事情变得非常糟糕

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


谢谢

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

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

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

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


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

我建议您使用MediaWiki。它提供这种服务(我的意思是对散文进行版本控制)就像一种魅力。当然,这是一个PHP应用程序,但值得一试。git适用于散文。git不需要短线或额外的换行符,因为你不会自然地使用它们。你关心的是显示干净的差异,还是高效的压缩?Git在后者上应该没问题。它还可以执行word diff,这将解决您的许多问题,如果您愿意,它甚至可以将diff传递给外部diff工具。正如关于非常有用的
git diff--word diff
的说明一样,该功能是在v1.7.2中添加的,但在早期版本中,您可以使用git diff--color words。感谢您的回复。我发现杰弗罗米的评论特别有用,结合基思的回答,我想我明白我想要什么。我不关心git如何处理差异和存储,我希望它能够智能地显示差异。如果源文本不是硬包装的(源文本中没有换行符),那么我希望每个句子(句点分隔)都被视为一个单独的单元来进行差异显示。哇!感谢您的建议以及@MarkLongair,这使我的散文变得容易多了。我已经忍受了这么多年,却没有意识到有解决办法。