对于开源项目(例如本项目),每个人都拥有仓库的读取权限,任何人都可以为项目做出贡献。那么如何控制这些贡献呢?如果任何人都可以提交更改,项目将永久不稳定,并且可能永久损坏。在这种情况下,更改通过提交补丁文件给拥有写入权限的开发团队来管理。他们可以首先审查补丁,然后将其提交到仓库或拒绝并退回给作者。
补丁文件只是 Unified-Diff 文件,显示了您的工作副本与基础版本之间的差异。
首先,您需要进行 并测试 您的更改。然后,不要在父文件夹上使用 → ,而是选择 →
现在您可以选择要包含在补丁中的文件,就像完整提交一样。这将生成一个单独的文件,其中包含自上次从仓库更新以来您对所选文件所做的所有更改的摘要。
此对话框中的列可以像 检查修改 对话框中的列一样进行自定义。阅读名为“本地和远程状态”的章节以了解更多详细信息。
通过单击 选项 按钮,您可以指定如何创建补丁。例如,您可以指定最终补丁文件中不包含行尾或空格的更改。
您可以生成单独的补丁,其中包含对不同文件集的更改。当然,如果您创建一个补丁文件,对相同文件进行更多更改,然后创建另一个补丁,则第二个补丁文件将包含两组更改。
只需使用您选择的文件名保存文件即可。补丁文件可以使用任何您喜欢的扩展名,但按照惯例,它们应该使用 .patch
或 .diff
扩展名。现在您可以提交您的补丁文件了。
.txt
扩展名保存补丁文件。纯文本文件经常被电子邮件软件篡改,并且经常发生空格和换行符被自动转换和压缩的情况。如果发生这种情况,补丁将无法顺利应用。因此,当您保存补丁文件时,请使用 .patch
或 .diff
作为扩展名。您也可以将补丁保存到剪贴板而不是文件中。您可能希望这样做,以便您可以将其粘贴到电子邮件中供他人审查。或者,如果您在一台机器上有两个工作副本,并且想要将更改从一个工作副本传输到另一个工作副本,则剪贴板上的补丁是一种方便的方法。
如果您愿意,您可以从 提交 或 检查修改 对话框中创建补丁文件。只需选择文件并使用上下文菜单项从这些文件创建补丁即可。如果您想查看 选项 对话框,则必须在右键单击时按住 shift 键。
补丁文件应用于您的工作副本。这应该从与创建补丁时使用的相同文件夹级别完成。如果您不确定这是什么,只需查看补丁文件的第一行。例如,如果正在处理的第一个文件是 doc/source/english/chapter1.xml
并且补丁文件中的第一行是 Index: english/chapter1.xml
,那么您需要将补丁应用于 doc/source/
文件夹。但是,前提是您在正确的工作副本中,如果您选择了错误的文件夹级别,TortoiseSVN 会注意到并建议正确的级别。
为了将补丁文件应用于您的工作副本,您需要至少拥有仓库的读取权限。原因是合并程序必须将更改追溯到远程开发人员进行更改的版本。
从该文件夹的上下文菜单中,单击 .patch
或 .diff
文件,但您可以选择“所有文件”。如果您之前将补丁保存到剪贴板,则可以使用文件打开对话框中的 。请注意,此选项仅在您使用 → 将补丁保存到剪贴板时才会出现。从另一个应用程序复制补丁到剪贴板不会使该按钮出现。
或者,如果补丁文件具有 .patch
或 .diff
扩展名,您可以直接右键单击它并选择 → 。在这种情况下,系统将提示您输入工作副本位置。
这两种方法只是提供了执行相同操作的不同方式。第一种方法是您选择工作副本并浏览到补丁文件。第二种方法是您选择补丁文件并浏览到工作副本。
一旦您选择了补丁文件和工作副本位置,TortoiseMerge 就会运行以将补丁文件中的更改与您的工作副本合并。一个小窗口列出了已更改的文件。依次双击每个文件,查看更改并保存合并后的文件。
远程开发人员的补丁现已应用于您的工作副本,因此您需要提交以允许其他人从仓库访问更改。