比较和合并都基于对差异的检测。本主题对差异和冲突进行了描述。
检测的基本单位是 XML 节点:差异总是将单个添加程序中的节点与基本版本中的同一节点类型进行比较。
一个节点可以包含多个子节点,但是检测不会变得更详细。例如,如果一个文本节点的内容已更改, Rational® ClearCase® XML Diff
Merge 不会指明该文本中存在哪些差异;它只是会指明该节点在这两个版本之间有差异。
要查找不同添加程序中的同一节点, Rational ClearCase XML
Diff Merge 执行以下序列匹配测试:
- 节点类型:仅可匹配同一类型的节点,因为不同节点类型有不同的行为和语义。
- 内容:用于匹配的内容和规则的类型取决于节点类型。
- 上下文:许多节点(例如属性名称和值)与父元素节点紧密绑定。上下文匹配确定在不同添加程序之间哪些节点处于同一位置。处于同一位置但具有不同值的节点称为存在更改。
差异类型
表 1 描述了 Rational ClearCase XML Diff
Merge 检测到的四个差异类型以及其中每个差异类型在添加程序窗格中如何显示。为了简单起见,仅将显示一个基本版本/添加程序对。请注意每个差异的文本颜色和悬浮式帮助:它们清晰地指明差异的类型。
表 1. 差异类型差异类型 |
图示 |
更改 项目的值不同。
|
 |
添加 在添加程序中插入了一个项目。
基本版本在更改后的添加程序中插入项目之处包含有占位符。
|
 |
删除 在添加程序中除去了一个项目。
更改后的添加程序在除去该项目之处包含一个占位符。 |
 |
移动 项目的位置不同。
移动差异在每个添加程序中具有多个位置:在其他添加程序中该 XML 项目的每个位置有该 XML 项目本身和占位符。
使用 下一个位置按钮在差异的所有位置之间切换。
|
 |
自动合并如何解决差异
匹配节点后,自动合并会尝试解决差异:
- 对于在所有添加程序之间不更改的任何节点,输出节点不更改。
- 对于在基本版本和另外一个添加程序之间更改的任何节点, Rational ClearCase XML Diff
Merge 会解决该差异(如果自动合并策略允许)。例如,如果该策略是从任何添加程序接受,则将更改后的节点插入输出。但是,如果该策略是仅从目标添加程序接受,那么仅当在目标添加程序中有更改时才会解决。
- 对于在基本版本和多个其他添加程序之间更改的任何节点,不能自动解决这些差异。必须手动解决该冲突。
未解决的差异和冲突类型
在合并和比较窗口中,您可以通过单击未解决的差异按钮导航未解决的差异。未解决的差异在每个窗口中意思稍有不同。
在合并窗口中,添加程序中每个未解决的差异由合并输出窗格中的合并点图标表示。
在比较窗口中,未解决的差异表示在自动合并后仍会存在的冲突(无论该自动合并策略如何)。
冲突可以通过在添加程序之间的各个差异类型来进行描述。在两个窗口中,未解决的差异的悬浮式帮助都表示表 2中描述的冲突类型之一。
表 2. 未解决的差异类型未解决的差异类型 |
图示 |
更改-更改 在两个或更多添加程序之间,同一节点更改方式不同。
|
 |
添加-添加 在两个或更多添加程序中插入了同一节点的不同版本。
|
 |
更改-删除 同一节点在一个添加程序中进行了更改,而在另一个添加程序中被删除。
|
 |
移动-更改 同一节点在一个添加程序中进行了更改,而在另一个添加程序中被移到其他位置。
|
 |
移动-删除 同一节点在一个添加程序中被删除,而在另一个添加程序中被移到其他位置。
|
 |
移动-移动 同一节点在一个添加程序中被移到一个位置,而在另一个添加程序中被移到另一个位置。
|
 |