更新

当您正在对工作台中的项目进行工作时,小组中的其他成员可能正在提交对资源库中该项目的副本的更改。要获取这些更改,可以“更新”您的“工作台”以便与分支的状态相匹配。您将看到的更改将特定于“工作台”项目被配置为可共享的分支。您可以控制何时选择进行更新。

可以从两个位置发出更新命令:小组 > 更新菜单,或者同步视图。为了理解这两个命令之间的差异,必须了解三种不同类型的入局更改。

当您选择小组 > 更新时,本地资源的内容将更新为所有以上三种类型的入局更改。对于非冲突和可自动合并的冲突,不需要执行附加操作(对于可自动合并的冲突,仅当用户不想进行自动合并时,才会将已更改的本地资源移至前缀为“.#”的文件中)。然而,对于不可自动合并的冲突,会使用特殊的 CVS 特定标记文本将冲突合并到本地资源中(对于 ASCII 文件),或者将已更改的本地资源移至前缀为“.#”的文件(对于二进制文件)。这与 CVS 命令行的行为相匹配,但是在与 Eclipse 自动构建机制组合时可能会有问题。另外,在更新任何本地资源之前,通常期望知道存在哪些入局更改。这些问题由“同步”视图解决。

要以入局方式打开“同步”视图:

  1. 在“导航器”视图中,选择想要更新的资源。
  2. 从所选资源的弹出菜单中,选择小组 > 与资源库同步。“同步”视图将打开。
  3. 在“同步”视图的工具栏上,单击入局方式按钮以过滤掉您可能已修改的任何“工作台”资源(出局更改)。

在入局方式中,您将看到自从上次更新以来已提交给分支的更改。视图将指示每种入局更改的类型(非冲突、可自动合并冲突或不可自动合并冲突)。有两个更新命令(可从视图中的任何资源的上下文菜单中获得)用来处理不同类型的冲突:从资源库更新覆盖并更新。当在“同步”视图中选择从资源库更新命令时,将只处理非冲突更改,使具有可自动合并或不可自动合并冲突的任何文件保留在视图中(将从视图中除去已成功处理的任何文件)。覆盖并更新命令对两种类型的冲突执行操作。在选择此命令之后,在尝试执行合并之前将提示并询问您是想要自动合并内容还是用资源库文件覆盖它们。如果选择自动合并,则将只处理可自动合并的冲突,并且会自动将入局更改与本地更改合并。否则,将处理所有冲突,并且将把本地资源替换为远程内容。通常不期望发生此“替换”行为。下面描述了一种替代方法。

要更新非冲突和可自动合并的文件:

  1. 在“同步”视图顶层的“结构比较”窗格中包含具有入局更改的资源的层次结构。
  2. 选择非冲突文件,并从弹出菜单中选择从资源库更新。这将更新所选择的资源并从视图中除去它们。
  3. 选择可自动合并的冲突,并从弹出菜单中选择覆盖并更新。选择只更新可自动合并的资源,并在提示时单击“确定”。这将更新所选择的资源并从视图中除去它们。

如果本地“工作台”包含不可与来自分支的入局更改自动合并的任何出局更改,则不执行覆盖并更新,您可以将差别手工合并到“工作台”中,如下所示:

  1. 在“结构比较”窗格中,如果资源列表中存在冲突(用红色箭头表示),则选择它。
  2. 在“同步”视图的“文本比较”区域中,在左边表示的是本地“工作台”数据,在右边表示的是资源库分支数据。检查两边数据的差别。
  3. 使用文本比较区域来合并任何更改。可以将更改从文件的资源库修订版复制到文件的“工作台”副本,并保存合并的“工作台”文件(使用左窗格中的弹出菜单)。
  4. 一旦完成了将远程更改合并到本地文件中,就从弹出菜单中选择标记为已合并。这将把本地文件标记为已更新,并且允许您提交更改。

注意:当进行更新时,不会更改资源库内容。当接受入局更改时,这些更改将应用于“工作台”。仅当您提交出局更改时才会更改资源库。

提示:在“结构比较”窗格中,选择一组入局更改的祖先时将对所有适当的子代执行操作。例如,如果选择最顶层的文件夹并选择从资源库更新,则将处理所有非冲突的入局更改,并且不处理所有其它入局更改。

警告:以上描述的覆盖并更新命令的行为只适用于“同步”视图的入局方式。在视图的入局/出局方式中,入局更改和冲突的行为是相同的,但是该命令将把出局更改回复为资源库的内容。在入局/出局方式中使用此命令时一定要非常小心。

相关概念
用 CVS 编程的小组
与 CVS 资源库同步

相关任务
提交
解决冲突
比较资源
版本控制生命周期:添加和忽略资源

相关参考
CVS
同步视图

 
Copyright IBM Corporation and others 2000, 2003