在开发 TortoiseSVN 时,我们发现,每当用户提交补丁来增强项目或修复错误时,我们都需要花费大量时间来应用这些补丁。而且很多时候,这些补丁已经过时,无法使用命令行补丁工具 https://unxutils.sourceforge.net/ 应用,因为我们一直在修改这些文件,有时已经修改了这些文件。
这也是 TortoiseSVN 最初没有实现
→ 的主要原因:我们更希望用户发送完整的文件,因为这样更容易应用补丁。因此,我们花费了大量时间在互联网上搜索可以应用补丁文件的 GUI 工具,但我们发现这样的工具并不存在。所以,长话短说:我们决定,如果没有人能提供这样的工具,我们就必须自己编写。这就是 TortoiseMerge 的诞生。
由于 TortoiseSVN 已经使用 Subversion 库,该库内置了一个不错的 diff 引擎,因此使用这个库而不是 GNU diff 是很自然的。
Subversion 1.7 引入了 svn patch 命令,该命令允许将补丁文件应用到工作副本。TortoiseMerge 现在使用与 Subversion 命令相同的函数,以避免两者之间出现不同的行为。