使用补丁
补丁允许开发者共享工作而不必将它存储在存储库中。当开发者想要通过存储库对共享的项目添加内容,但对存储库又没有写访问权时,这是很有用的。在此情况下,开发者可以创建补丁并根据项目定义的过程用电子邮件将其发送给具有写访问权的开发者,或将其附加至项目使用的故障报告系统中的故障中。具有写访问权的开发者就可以将补丁应用到项目并落实更改。
要从 CVS 项目创建补丁:
- 选择包含要包括在补丁中的修改的资源。由于“创建补丁”向导在以缺省方式运行时知道如何创建多项目补丁,所以,您可以选择多个项目中并处于任何级别的资源。还应将补丁应用于生成它的同一文件修订,所以应执行一些步骤以确保将补丁应用到同一资源队列(完成此操作的最简单方法是在某版本顶层创建补丁)。
- 从弹出菜单,选择团队 > 创建补丁...。“创建补丁”向导将打开。
- 选择要保存补丁的位置:
- 保存至剪贴板 - 这将把补丁放置在剪贴板上,以便可以将其粘贴到文本编辑器(如电子邮件程序)中。
- 保存至文件系统 - 这将把补丁放置到本地文件系统中指定的文件中。
- 在工作空间中保存 - 这将把补丁放置到某个现有工作台项目内指定的文件中。
对于小补丁,使用剪贴板来传送补丁可能也是合理的,但是在大多数情况下,使用本地文件系统是最好的选择。
- 通过展开“更改”窗格中显示的“资源”树,可以预览补丁所选项并进行微调。只有那些选中的元素才会包括在补丁中。单击下一步以配置如何生成补丁。
- 选择如何配置补丁:
- diff 输出格式 - 允许选择几个常用 diff 输出格式。Unified 是由许多补丁应用程序工具(包括 Eclipse)使用的格式。尽管所提到的用于块(补丁术语)的行号不正确,但是 Context 和 Unified diff 中使用的格式允许应用补丁。在这种情况下,当应用补丁时,算法将从正反两个方向对与为该块给定的上下文相匹配的一组行进行扫描。
- 补丁根 - 允许您指定补丁根的级别。选项为工作空间、项目和所选项。
工作空间允许在补丁中包括多个项目中的资源,这是缺省选项。工作空间补丁可以应用于工作空间中的任何资源 - 它们包含足够的信息来允许“应用补丁”向导确定对哪些资源应用补丁。
项目补丁的根在项目级 - 这意味着它们只能包含一个项目中的资源,并且只能应用于同一个项目。
所选项补丁的根是所选资源,它只能应用于该资源。
- 单击完成。
- 对正在修补的项目以适当的方式传送补丁。
要应用补丁:
- 选择生成补丁所在的资源。此资源应包含与生成补丁所在的队列相同的文件修订。
- 从弹出菜单中选择团队 > 应用补丁...。“应用补丁”向导将打开。
可通过将补丁内容复制到剪贴板并通过选择编辑 > 粘贴直接将其粘贴到“包资源管理器”视图来实现此操作。
在此情况下,可跳过下一步。
- 指示将查找补丁的位置:
- 文件 - 补丁在本地文件系统上的文件中。输入文件的完整路径或使用“浏览...”按钮来查找文件。
- 剪贴板 - 补丁在剪贴板上。警告:使用基于文件的补丁更安全。如果使用剪贴板并且补丁是在不同平台(即,Linux 与 Windows)上生成的,那么可能不会正确地处理行结尾。
- URL - 补丁位于给定 URL 以下。警告:确保您输入的 URL 有效并且包含适当的补丁。
否则,您将无法应用此补丁。还应记住,直接从 URL 应用补丁可能要花一些时间。
- 工作空间 - 该补丁已被保存在工作空间中的某个位置中。
单击下一步以查看应用补丁的效果。
-
可选步骤:仅当补丁的根在项目级或所选项级时,此步骤才适用 - 根在工作空间的补丁将自动转到“预览补丁”页。在“指定补丁目标”页中,应该选择要作为补丁的根的资源。
- “预览补丁”页显示补丁是否可以成功地应用于工作空间中的文件。顶部窗格显示了补丁中包含的更改列表。顶部窗格包含两类条目:文件更改和未匹配的补丁段(在补丁术语中称为“块”)。
- 如果可以将一个或多个补丁段自动应用于文件,那么该文件将显示为带有更改指示符。您可以通过双击该文件来检查更改。
- 如果无法自动应用一个或多个块,那么在顶部窗格中,块条目将显示为该文件的子代,并且将显示红色感叹号以指示补丁或块有问题。您可以通过双击块对其进行检查。然后,可以将右窗格中的块手动应用于左边的文件。在左窗格中执行保存时,将更新顶部窗格中的父文件条目,但不会修改磁盘上的文件。仅当按“完成”时,才会修改磁盘上的文件。要成功地应用完整补丁,您必须通过手动应用补丁段、通过从上下文菜单中选择除去从操作中排除补丁段或者通过打开此向导页上的选项(请参阅下面的“选项”)解决标有红色感叹号的问题。
- 如果没有问题,单击完成以应用补丁。工作空间现在将包含补丁修改的每个文件的传出更改。
可通过使补丁与本地内容同步来应用补丁
要与补丁同步:
-
从“团队同步”透视图中的“同步”
按钮下拉菜单中选择同步... 操作。
-
从可能的同步类型列表中选择与补丁同步并单击下一步。
- 指示将查找补丁的位置:
- 文件 - 补丁在本地文件系统上的文件中。输入文件的完整路径或使用“浏览...”按钮来查找文件。
- 剪贴板 - 补丁在剪贴板上。警告:使用基于文件的补丁更安全。如果使用剪贴板并且补丁是在不同平台(即,Linux 与 Windows)上生成的,那么可能不会正确地处理行结尾。
- URL - 补丁位于给定 URL 以下。警告:确保您输入的 URL 有效并且包含适当的补丁。
否则,您将无法应用补丁。还应记住,直接从 URL 应用补丁可能要花一些时间。
- 工作空间 - 该补丁已被保存在工作空间中的某个位置中。
单击下一步以查看应用补丁的效果。
-
可选步骤:仅当补丁的根在项目级或所选项级时,此步骤才适用 - 根在工作空间的补丁将自动转到“预览补丁”页。在“指定补丁目标”页中,应该选择要作为补丁的根的资源。
-
可选步骤:仅当补丁引用不可访问的项目时,此步骤才应用 - 如果补丁中的所有项目在工作空间中存在并且已打开,那么此页面将被跳过。在“不可访问项目”页面中,可打开所有关闭的项目。而且,将显示有关非现有项目的详细信息。
无法对工作空间中已关闭或不存在的项目应用补丁。
-
在最终页面上,单击完成以预览“同步”视图中的补丁更改。
应用补丁的选项
要获取补丁文件的成功匹配项,您可以选择:
-
回到“应用补丁”向导的第一页并选择要应用补丁的正确资源。
-
如果存储在补丁文件中的路径名的公共前缀与当前工作空间中的路径名不匹配,那么可以忽略前导路径名段。
-
使用忽略空格按钮来使匹配进程忽略补丁文件与工作空间中文件之间的空格差别。
-
调整模糊因子(补丁术语)。此因子指示要忽略的块上下文行的数目。
如果“模糊因子”值为 0,那么所有行都需要匹配。
如果“模糊因子”值大于 0(例如,为 2),那么将忽略块前面的前两个上下文行以及块后面的最后两个上下文行。单击猜测以计算使大部分块能够匹配的模糊因子。
-
对已应用于工作空间的补丁文件使用逆向补丁选项。此选项对于撤销或重新执行补丁也很有用。
-
对于工作空间补丁,可以从工作空间中选择另一个项目,以将补丁更改应用于该项目。要完成此任务,请从顶部窗格中选择项目,然后从上下文菜单中选择移动。这将打开一个对话框,列示工作空间中的所有可用项目。请选择项目并单击确定,这将把补丁更改应用于所选项目。
-
使用显示排除项选项来显示您已选择不包括在补丁中的块。
-
与补丁同步时,上述选项在“同步视图”的下拉菜单中可用。还可在可用模型之间切换以获取有关正在应用的更改的附加信息。

CVS 团队编程

比较资源
与存储库同步
团队
CVS