使用补丁

补丁允许开发者共享工作而不必将它存储在存储库中。当开发者想要通过存储库对共享的项目添加内容,但对存储库又没有写访问权时,这是很有用的。在此情况下,开发者可以创建补丁并根据项目定义的过程用电子邮件将其发送给具有写访问权的开发者,或将其附加至项目使用的故障报告系统中的故障中。具有写访问权的开发者就可以将补丁应用到项目并落实更改。

要从 CVS 项目创建补丁:

  1. 选择包含要包括在补丁中的修改的资源。尽管它可以是任何文件夹,但是选择项目自身很容易,因为必须将补丁应用到生成它的同一资源中。还应将补丁应用于生成它的同一文件修订,所以应执行一些步骤以确保将补丁应用到同一资源队列(完成此操作的最简单方法是在某版本顶层创建补丁)。
  2. 从弹出菜单,选择小组 > 创建补丁...。“创建补丁”向导将打开。
  3. 选择要保存补丁的位置:
    1. 保存至剪贴板 - 这将把补丁放置在剪贴板上,以便可以将其粘贴到文本编辑器(如电子邮件程序)中。
    2. 保存至文件系统 - 这将把补丁放置到本地文件系统中指定的文件中。
    3. 在工作空间中保存 - 这将把补丁放置到某个现有工作台项目内指定的文件中。
    对于小补丁,使用剪贴板来传送补丁可能也是合理的,但是在大多数情况下,使用本地文件系统是最好的选择。单击下一步以配置如何生成补丁。
  4. 选择如何配置补丁:
    1. 递归至子文件夹中 - 如果禁用,则仅将选择的直接子代包括在补丁中。否则,将包括所有后代。
    2. 将新文件包括在补丁中 - 如果禁用,则仅包括处于 CVS 版本控制之下的文件。否则,还将包括新创建但尚未添加或已忽略的文件。
    3. diff 输出格式 - 允许选择几个常用 diff 输出格式。Unified 是由许多补丁应用程序工具(包括 Eclipse)使用的格式。
  5. 单击完成
  6. 对正在修补的项目以适当的方式传送补丁。

要应用补丁:

  1. 选择生成补丁所在的资源。此资源应包含与生成补丁所在的队列相同的文件修订。
  2. 从弹出菜单中选择小组 > 应用补丁...。“资源修补器”向导将打开。
  3. 指示将查找补丁的位置:
    1. 文件 - 补丁在本地文件系统上的文件中。输入文件的完整路径或使用浏览... 按钮来查找文件。
    2. 剪贴板 - 补丁在剪贴板上。警告:使用基于文件的补丁更安全。如果使用剪贴板并且补丁是在不同平台(即,Linux 与 Windows)上生成的,则可能不会正确地处理行结尾。
    单击下一步以查看应用补丁的效果。
  4. 此页面的顶部窗格显示补丁是否可以成功地应用于工作空间中的文件。如果在树中选择了叶项,则底部窗格将以容易读取的并列方式显示补丁文件的该部分(在补丁术语中称为“块”)。注意:底部窗格显示应用块后资源在工作空间中的外观的预览。它仅显示补丁文件的内容。
    1. 选择的项指示补丁(或块)可以成功应用于工作空间资源。可以通过取消选择补丁或各个块来排除它们。
    2. 红色感叹号指示补丁或块有问题。
      如果补丁的格式不够严谨,或对其生成补丁的一个或多个文件的修订与补丁要应用于的修订不匹配,将发生这种情况。
      查找括号中故障的原因。

      要成功地应用完整补丁,您将必须解决问题(标有红色感叹号)并通过调整此向导页上的选项(请参阅下面的“选项”)来获取各处所选择的项。

  5. 如果没有问题,单击完成以应用补丁。工作空间现在将包含补丁修改的每个文件的传出更改。

应用补丁的选项

要获取补丁文件的成功匹配项,您有以下选项:
  1. 回到“资源修补器”向导的第一页并选择补丁应应用的正确资源。
  2. 如果存储在补丁文件中的路径名的公共前缀与当前工作空间中的路径名不匹配,则可以“忽略前导路径名段”。
  3. 使用“忽略空格”选项来使匹配进程忽略补丁文件与工作空间中文件之间的空格差别。
  4. 调整“最大模糊因子”(补丁术语)。此因子确定允许块与其原始行后的多少行进行匹配。缺省值为两行。所以,如果块在补丁文件中给定的行上不匹配,则“资源修补器”将尝试将块与该位置之前或之后的“fuzz”(模糊操作)行相匹配。
  5. 对已应用于工作空间的补丁文件使用“逆向补丁”选项。此选项对于撤销或重新执行补丁也很有用。

相关概念
CVS 小组编程

相关任务
比较资源

相关参考
CVS