当您正在对工作台中的项目进行工作时,小组中的其他成员可能正在提交对资源库中该项目的副本的更改。要获取这些更改,可以“更新”您的“工作台”以便与分支的状态相匹配。您将看到的更改将特定于“工作台”项目被配置为可共享的分支。您可以控制何时选择进行更新。
可以从两个位置发出更新命令:小组 > 更新菜单,或者同步视图。为了理解这两个命令之间的差异,必须了解三种不同类型的入局更改。
当您选择小组 > 更新时,本地资源的内容将更新为所有以上三种类型的入局更改。对于非冲突和可自动合并的冲突,不需要执行附加操作(对于可自动合并的冲突,仅当用户不想进行自动合并时,才会将已更改的本地资源移至前缀为“.#”的文件中)。然而,对于不可自动合并的冲突,会使用特殊的 CVS 特定标记文本将冲突合并到本地资源中(对于 ASCII 文件),或者将已更改的本地资源移至前缀为“.#”的文件(对于二进制文件)。这与 CVS 命令行的行为相匹配,但是在与 Eclipse 自动构建机制组合时可能会有问题。另外,在更新任何本地资源之前,通常期望知道存在哪些入局更改。这些问题由“同步”视图解决。
要以入局方式打开“同步”视图:
在入局方式中,您将看到自从上次更新以来已提交给分支的更改。视图将指示每种入局更改的类型(非冲突、可自动合并冲突或不可自动合并冲突)。有两个更新命令(可从视图中的任何资源的上下文菜单中获得)用来处理不同类型的冲突:从资源库更新和覆盖并更新。当在“同步”视图中选择从资源库更新命令时,将只处理非冲突更改,使具有可自动合并或不可自动合并冲突的任何文件保留在视图中(将从视图中除去已成功处理的任何文件)。覆盖并更新命令对两种类型的冲突执行操作。在选择此命令之后,在尝试执行合并之前将提示并询问您是想要自动合并内容还是用资源库文件覆盖它们。如果选择自动合并,则将只处理可自动合并的冲突,并且会自动将入局更改与本地更改合并。否则,将处理所有冲突,并且将把本地资源替换为远程内容。通常不期望发生此“替换”行为。下面描述了一种替代方法。
要更新非冲突和可自动合并的文件:
如果本地“工作台”包含不可与来自分支的入局更改自动合并的任何出局更改,则不执行覆盖并更新,您可以将差别手工合并到“工作台”中,如下所示:
注意:当进行更新时,不会更改资源库内容。当接受入局更改时,这些更改将应用于“工作台”。仅当您提交出局更改时才会更改资源库。
提示:在“结构比较”窗格中,选择一组入局更改的祖先时将对所有适当的子代执行操作。例如,如果选择最顶层的文件夹并选择从资源库更新,则将处理所有非冲突的入局更改,并且不处理所有其它入局更改。
警告:以上描述的覆盖并更新命令的行为只适用于“同步”视图的入局方式。在视图的入局/出局方式中,入局更改和冲突的行为是相同的,但是该命令将把出局更改回复为资源库的内容。在入局/出局方式中使用此命令时一定要非常小心。