对版本树中的版本进行编辑后,版本开始彼此不同。从祖先版本检索任何更改内容并将版本中的编辑内容合并到祖先版本的过程称为协调和提交过程。完成某一版本的编辑后,可将进行的更改合并到另一个版本。使用传统版本化,您可以将更改合并到该版本的任意原型版本(如父版本或 Default 版本)。
在开始处理当前版本时,其他用户可能已经对祖先版本进行了更改,其更改内容与您的编辑内容可能存在冲突。在对编辑内容和目标版本进行协调时将会发现这些冲突。
如果存在冲突,ArcGIS Pro 会对其进行解决,具体依照编辑版本表示还是目标版本表示将取决于首选项设置。最初冲突解决后,您可以逐一检查这些冲突,如有必要,可进行任何更改。例如,如果优先在编辑版本中解决冲突,则您可以选择优先在目标版本中替换此冲突,或者使用编辑工具采用其他方式来修改此冲突。
协调过程仅更新编辑版本,以便 ArcGIS Pro 可以检查冲突;此过程不会将更改内容合并到祖先版本中。完成协调并查看所有冲突后,通过将更改提交到祖先版本来完成合并过程。
协调过程 - 传统版本
在传统版本化中,要使用祖先版本协调编辑内容,以下条件必须为真:
- 您必须是正在对当前协调的传统版本进行编辑的唯一用户。
- 任何其他用户都不能编辑目标版本。例外是目标版本是否为默认版本。即使其他用户正在编辑默认版本,也可以针对默认版本进行协调。
- 您必须能够查看目标版本,这意味着目标版本可以是公有的,也可以是受保护的。如果目标版本是私有的,您必须是版本所有者或地理数据库管理员。
- 如果工作流是一个用户编辑,另一个用户协调,则要确保协调的用户对已在版本中修改的所有要素类和表具有所有权限;否则,该用户将无法协调。执行协调过程的用户必须对已经进行修改的任何关系(包括基本或复合关系)的双方具有所有权限。在这种类型的工作流程中,执行协调过程的用户还必须具有足够的版本权限。协调用户必须能够修改要协调的版本(这表示该版本必须是公有的),而且必须能够查看目标版本(这表示该用户必须拥有该目标版本或者该目标版本必须是公有的或受保护的)。
要开始协调过程,可单击版本化选项卡上版本化组中的协调。
协调对话框出现后,需要提供以下信息:
- 目标版本
- 您希望定义冲突的方式。您具有以下几种选项:
定义冲突的级别 要检测这些情况 行(按对象)
另一用户像您一样编辑同一行或要素或者拓扑结构上相关的要素。即使您编辑不同属性,也会发生冲突。
列(按属性)
另一用户编辑某一要素或某个表的同一属性。这是默认设置。
用于定义冲突的选项 - 希望 ArcGIS Pro 解决冲突的方式:优先使用正在编辑的版本(称为编辑版本)或目标版本 - 如果优先使用目标版本进行解决,则在当前编辑会话中的所有冲突要素均会被其在目标版本中的表示所取代。如果多个用户编辑同一版本而检测出冲突,则会用最早保存的要素替换编辑会话的表示。如果选择的解决规则是优先使用编辑版本,则当前编辑会话中的所有冲突要素均优先于目标版本中的冲突表示。
注:
无法使用“撤消”操作撤消协调操作。要撤销协调,您可以放弃更改,而不进行保存。
要使用祖先版本对传统版本中的编辑内容进行协调,请执行以下操作:
- 单击版本化选项卡上版本化组中的协调。
将显示协调对话框。
- 选择目标版本。
- 指定定义冲突的方式。
- 指定是优先使用编辑版本还是其他目标版本解决所有冲突。
如果选择优先使用目标版本解决冲突,则当前编辑会话中的所有冲突要素均被替换为其在目标版本中的表示。如果多个用户编辑同一版本而检测出冲突,则会用最早保存的要素替换编辑会话的表示。如果选择的解决规则是优先使用编辑版本,则当前会话中的所有冲突要素均优先于目标版本中的冲突表示。
- 单击确定。
使用“冲突”视图查看冲突
如果在协调时检测到冲突,您可以选择使用交互式“冲突”视图对其进行查看。该视图可以停靠在应用程序中的任意位置,也可以定位为浮动窗口。由此您能够同时与地图视图进行交互以提供背景并进一步浏览数据。“冲突”视图包含所有冲突类及其处于冲突状态的要素或行。这样您也可以:
- 确定处于冲突状态的字段或行
- 查看冲突
- 将冲突标记为已查看或未查看
- 通过指定用来代替要素或属性的表示以解决冲突
在以下几种情况下发生冲突:
- 在当前正在编辑的版本和目标版本中对同一要素进行更新。
- 在一个版本中更新某个要素,而在另一版本中删除该要素。
- 在当前正编辑的版本和目标版本中修改拓扑结构上相关的要素或关系类。
如果传统版本中存在冲突,ArcGIS Pro 会对其进行解决,具体依照编辑版本表示还是目标版本表示将取决于首选项设置。冲突解决后,您可以逐一检查这些冲突,如有必要,可进行任何更改。例如,如果依照编辑版本解决了冲突,您可以选择依照目标版本进行替换,或者使用编辑工具通过其他方式对其进行修改。
确定处于冲突状态的字段或行
冲突视图左上角的列表框可显示所有冲突类和要素。此列表用于告知所有要素类中的冲突总数。
单击对象上的下拉箭头时,将显示每个要素的冲突。这些冲突将分为三种可能的类别:
- 更新-删除 - 要素已在当前版本中更新并在目标版本中删除
- 删除-更新 - 要素已在当前版本中删除并在目标版本中更新
- 更新-更新 - 要素已在当前版本和目标版本中更新
在列表中选择单个要素的 ObjectID 后,“冲突”视图右侧的信息格网中将显示要素的当前版本、目标版本和公共祖先版本中的列和属性。
通过使要素表示的所有属性和值处于冲突状态,您可以查看不同版本之间属性值的差异程度并选择要保留的数据的表示。
- 当前版本表示对要素和属性所做的编辑。
- 目标版本表示由其他用户进行编辑和协调的要素及其属性。这是您在打开“冲突”视图时选择的目标版本
- 公共祖先版本是数据库中的要素及其属性的表示;这是未经任何编辑的要素和属性。
行左侧的红色指示器用于标识冲突。例如,如果已在各版本中对要素几何进行了编辑,则会在 Shape 字段旁显示红色指示器。
如果其他属性字段处于冲突状态,则将在行的左侧显示红色指示器。如果在任一版本中删除了某个要素,则会对该版本的属性值显示 <已删除>。
如果已将要素插入子版本且这些要素被提升为冲突,则会在目标和公共祖先版本中显示 <不存在>。
您可以使用对话框底部的两个按钮在显示所有字段或仅显示处于冲突状态的字段之间进行切换。
标记为已查看或未查看
一旦确定处于冲突状态中的字段或行,您可以将要素标记为已查看。您可以追踪列表中已检查的要素,因为这些被标记为已查看的要素将不再显示为粗体。
如果决定以后要重新查看要素冲突,则可右键单击冲突列表中的 ObjectID,然后单击标记为未查看。这会使得要素重新显示为粗体。
如果您单击视图顶部的过滤已查看冲突复选框,您可以过滤列表,以便仅显示尚未查看的冲突。
解决冲突
解决冲突时,您需决定要保留要素和属性的哪个表示。无论您选择优先使用哪个版本(目标版本还是已编辑版本)进行协调,您都可以指定要保留哪个表示:当前表示(协调之前在您的版本中的显示方式)、目标表示(另一编辑器进行更改后的显示方式)或公共祖先表示(要素或属性在目标版本中的显示方式)。
要解决冲突,可使用四种替换选项:
- 属性替换:
它在字段级出现。如果属性中存在冲突,可以将当前版本中的属性值替换为当前、目标或公共祖先表示中的属性值。要执行此操作,右键单击冲突中的属性,然后在菜单中单击您想要的选项。
- 要素替换:
它在行级出现。可以将整个要素替换为当前、目标或公共祖先版本中的要素的表示。这意味着将替换冲突中的所有字段。
- 类级别替换:
要解决冲突,可以选择将整个要素类的当前表示替换为当前、目标或公共祖先版本表示。这将立即替换所有的冲突要求和属性,使用户能够快速更新和替换冲突要素。如果在差异列表中存在多个要素,则会将所有的要素替换为您所选择的版本。
要选择类级别替换选项,右键单击差异列表中的要素类名称,然后单击任意想要使用的版本。
- 完全替换:
这是一个根级别替换。使用此替换选项会将列表中的所有冲突要素和要素类替换为所指定的表示。如果在冲突中存在多个要素类和多个对象,则所有的这些要素类和对象都会被替换为您所选择的版本。
右键单击差异列表顶部的版本和连接信息,然后单击要用于替换所有冲突的版本。
字段级别冲突过滤
在使用传统版本化的一些情况下,一旦在协调期间检测到冲突,您可能想要将编辑内容应用至要避免冲突的一个或一组字段。以下示例为,进行协调时可能想要过滤出在字段上检测到的冲突:
- 将对不同版本的字段执行批量更新。
- 根据在版本中执行的编辑操作在字段中写入信息。
添加字段冲突过滤器工具可用于定义要通过冲突过滤的一组字段。通过字段冲突过滤器,可在通过冲突检测过滤要素类时在要素类中标记一个或一组字段。仅适用于按属性定义冲突。
注:
在将字段冲突过滤器应用至一个字段或字段集后,如果仅编辑设置了过滤器的字段,则在协调时不会标识冲突。如果编辑了其他未过滤的字段,则在协调时,如果与这些字段的目标版本存在冲突,则会在“冲突管理器”中标识所有处于冲突状态的字段(已过滤和未过滤字段)。
对更改内容进行协调后,放置在带有冲突过滤器的字段中的值取决于是选择优先使用目标版本还是编辑版本进行协调。如果选择优先使用目标版本执行协调,则带有冲突过滤器的字段将具有与目标版本相同的值。如果选择优先使用编辑版本执行协调,则带有冲突过滤器的字段将具有与编辑版本相同的值。
移除字段冲突过滤器工具可从这些字段中移除这些冲突过滤器。ListFieldConflictFilters Python 函数可用于确定何时为要素类或表定义了冲突过滤器。
注:
为要素类或表定义了字段冲突过滤器后,10.2.1 版之前的 ArcGIS 客户端将被禁止打开要素类或表。字段冲突过滤器可在字段中定义,如果之前版本的 ArcGIS 需要访问数据,则可以在协调版本后将其移除。
使用属性规则解决冲突
属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。针对实时计算或约束规则协调传统版本化要素类将会评估这些属性规则。如果违反了约束规则,则会报告约束规则错误,并且协调失败。按行协调冲突,以避免约束规则错误。
提交更改
协调并审阅了所有冲突后,便可提交对原始版本的更改。
- 单击版本化选项卡上版本化组中的提交。
提示:
在传统版本化中,其他正在读取您所提交的目标版本的用户在刷新他们的版本化工作空间之前,看不到提交的更改内容。
只有在上次协调更改内容后未对目标版本做出任何修改时,才能提交更改内容。如果在此期间修改了目标版本,则必须在提交前重新进行协调。
提交更改内容后无法进行撤消,因为对其应用更改的版本不是当前正在编辑的版本。
提交后,可在版本中继续执行进一步编辑。要将这些更改应用到目标版本,必须再次执行协调、解决冲突和提交过程。
如果提交操作标志着工作流结束,则可删除已编辑的版本。