使用 System Composer 三路合并工具解决工程中的冲突
此示例展示了如何使用 System Composer 三向合并工具 来调查和解决工程中的 System Composer™ 架构模型中的冲突。您可以在生成的报告中查看和合并 System Composer 架构模型的差异。
合并工具会在您打开合并报告之前自动合并无冲突的更改。此示例演示了如何:
审查自动合并的选择项。
将您所需的编辑内容应用到目标文件中。
决定如何解决任何剩余的分歧。
解决冲突后,您可以将已解决的架构提交到源代码管理。
System Composer 架构更改和冲突
示例工程 RobotArchitectureProject
处于 Git™ 源代码管理之下。当您尝试将同事在 main
Git 分支上的更改合并到您的 t askBranch
分支时,该操作会导致冲突。
要使用“三向合并”工具解决冲突,请检查本地文件(在本示例中为 Mine,即 taskBranch
分支)、冲突的修订版本(在本示例中为 Theirs,即 main
分支)以及这两个文件的共同祖先 (Base)。
Theirs - 一位同事在
main
分支上工作,更新了Motion
组件,并更新了Component View
视图中使用的查询。Mine - 您更新了
Motion
组件的名称,并更新了taskBranch
分支上的Component View
视图中的查询。
打开 System Composer 三路合并工具
在“工程”面板中,查找冲突文件。RobotArchitecture
文件在源代码管理列中显示一个红色警告图标,表示存在冲突。
要查看冲突的详细报告,在“源代码管理”面板的修改的文件部分,右键点击 RobotArchitecture
文件,然后选择查看冲突。
查看更改
三路合并工具显示了导致此文件冲突的两个 System Composer 架构模型的更改。
主要、taskBranch 和 Base 窗格显示冲突修订、您的修订以及这些文件的基祖之间的差异。
目标窗格显示合并更改的目标文件。当您选择接受合并结果时,该工具会将此临时文件复制到工程中。
右下角的摘要表显示合并工具自动解决了非冲突的差异。该表还显示,您必须解决剩余的更改。
您可以直观地检查架构模型文件中的个体差异。
要查看差异,请点击其中一个树中的行。合并工具在编辑器中显示每个模型的更改,例如,三路合并窗口右侧的 System Composer 画布。
在合并选项卡中的突出显示部分,点击顶层模型或底层模型按钮选择要显示的模型。
解决冲突
合并工具会在打开三路合并报告之前自动合并大多数无冲突的差异。在此示例中,您可以看到十处差异被自动合并。
合并工具无法解决冲突的差异。您必须在目标树中选择要保留在目标文件中的设计。
要解决冲突,请按照以下步骤操作。
1.使用下一个按钮导航至冲突位置。您和您的同事更改了 Name
属性,因此该属性发生冲突。在目标窗格中,默认情况下,该工具会选择来自分支 taskBranch
的更改。
2.要使用默认选项解决冲突,请将冲突标记为已解决。在目标窗格中,点击名称行中的冲突图标,然后点击标记为已解决。
3.在工具栏上,使用下一个按钮查看下一个冲突。Component View
视图存在冲突,因为您和您的同事修改了该视图的颜色和查询内容。
对于
Component View
的Color
属性,如果您想保留基版本的更改,请选择基列中的选项按钮。
对于
Component View
的Component Selection Query
属性,如果您想保留main
分支中的更改,请选择main
分支列中的选项按钮。
4.在工具栏上,使用下一个按钮跳转到下一个冲突。Motion Component
在 Component View
视图中发生冲突,因为您和您的同事更改了 Motion
组件的组件名称,并且此更改传播到视图。
为了与之前选择的更改保持一致,请选择
taskBranch
分支列中的选项按钮。
5.查看摘要表,确认您已解决所有冲突。
在此示例中,摘要表显示您已成功解决所有冲突。
如果您解决了当前视图中的所有冲突,但摘要表标题仍显示还有更改,请禁用过滤器以查看并解决剩余冲突。在合并选项卡中的过滤器部分,关闭过滤器。
接受更改
1.解决所有已过滤和未过滤的更改后,点击接受并关闭。合并工具将关闭报告和模型,接受 targetFile
中的合并结果,并在源控制工具中将冲突标记为已解决。
2.在将已解决的模型文件提交到源代码管理之前,通过将合并更改与当前分支进行比较来执行最终审查。
在工程的源代码管理视图中,右键点击模型,选择查看更改。
另请参阅
System Composer 三向合并工具 | System Composer 比较工具 | Resolve Conflicts in Project Using Simulink Three-Way Merge