手册

创建和应用补丁

对于开源项目(如本项目),每个人都可以读取存储库,并且任何人都可以为项目做出贡献。那么这些贡献是如何控制的呢?如果任何人都可以提交更改,项目将永远不稳定,并且可能永远无法修复。在这种情况下,更改是通过向开发团队提交一个补丁文件来管理的,开发团队拥有写入权限。他们可以先审查补丁,然后将其提交到存储库或将其拒绝回作者。

补丁文件只是统一差异文件,显示了工作副本和基本修订版之间的差异。

创建补丁文件

首先,您需要进行并测试您的更改。然后,而不是使用TortoiseSVN提交...在父文件夹上,您选择TortoiseSVN创建补丁...

图 4.63. 创建补丁对话框

The Create Patch dialog

您现在可以选择要包含在补丁中的文件,就像您在完整提交中一样。这将生成一个包含您自上次从存储库更新以来对所选文件所做的所有更改摘要的单个文件。

此对话框中的列可以像检查修改对话框中的列一样进行自定义。阅读名为“本地和远程状态”的部分以获取更多详细信息。

通过单击选项按钮,您可以指定补丁的创建方式。例如,您可以指定行尾或空格中的更改不包含在最终的补丁文件中。

您可以生成包含对不同文件集的更改的单独补丁。当然,如果您创建了一个补丁文件,对相同文件进行了一些更改,然后创建了另一个补丁,则第二个补丁文件将包含两组更改。

只需使用您选择的任何文件名保存文件即可。补丁文件可以使用任何您喜欢的扩展名,但按照惯例,它们应该使用.patch.diff扩展名。您现在可以提交您的补丁文件了。

提示

如果您打算通过电子邮件将补丁文件发送给其他人,请不要使用 .txt 扩展名保存补丁文件。纯文本文件经常会被电子邮件软件弄乱,并且经常发生空格和换行符被自动转换和压缩的情况。如果发生这种情况,补丁将无法顺利应用。因此,在保存补丁文件时,请使用 .patch.diff 作为扩展名。

您也可以将补丁保存到剪贴板,而不是保存到文件。您可能希望这样做,以便可以将其粘贴到电子邮件中,以便其他人进行审查。或者,如果您在一台机器上拥有两个工作副本,并且想要将更改从一个副本转移到另一个副本,剪贴板上的补丁是一种方便的方法。

如果您愿意,您可以在 提交检查修改 对话框中创建补丁文件。只需选择文件并使用上下文菜单项从这些文件创建补丁。如果您想查看 选项 对话框,您需要在 右键单击 时按住 shift

应用补丁文件

补丁文件应用于您的工作副本。这应该从与创建补丁时相同的文件夹级别进行。如果您不确定这是什么,只需查看补丁文件的首行。例如,如果第一个被处理的文件是 doc/source/english/chapter1.xml,并且补丁文件中的首行是 Index: english/chapter1.xml,那么您需要将补丁应用于 doc/source/ 文件夹。但是,只要您在正确的工作副本中,如果您选择了错误的文件夹级别,TortoiseSVN 会注意到并建议正确的级别。

为了将补丁文件应用于您的工作副本,您至少需要对存储库具有读取权限。这样做的原因是,合并程序必须将更改引用回远程开发人员对其进行更改的修订版。

从该文件夹的上下文菜单中,单击 TortoiseSVN应用补丁... 这将弹出一个文件打开对话框,允许您选择要应用的补丁文件。默认情况下,只显示 .patch.diff 文件,但您可以选择 所有文件。如果您之前将补丁保存到剪贴板,您可以在文件打开对话框中使用 从剪贴板打开...。请注意,此选项仅在您使用 TortoiseSVN创建补丁... 将补丁保存到剪贴板时才会出现。从另一个应用程序复制到剪贴板的补丁不会使按钮出现。

或者,如果补丁文件具有 .patch.diff 扩展名,您可以直接右键单击它并选择 TortoiseSVN应用补丁...。在这种情况下,系统会提示您输入工作副本位置。

这两种方法只是提供了完成同一件事的不同方式。使用第一种方法,您选择工作副本并浏览到补丁文件。使用第二种方法,您选择补丁文件并浏览到工作副本。

选择补丁文件和工作副本位置后,TortoiseMerge 会运行以将补丁文件中的更改与您的工作副本合并。一个小窗口列出了已更改的文件。依次双击每个文件,查看更改并保存合并后的文件。

远程开发人员的补丁现在已应用到您的工作副本,因此您需要提交以允许其他人从存储库访问更改。

TortoiseSVN 主页