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