Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

从比较报告合并 Simulink 模型

Merge 工具使您能够:

  • 使用三向合并解决源代码管理下模型文件中的冲突。通过选择 View Conflicts 打开。

  • 使用双向合并来合并任意两个模型文件。通过选择 Compare 上下文菜单项打开。

  • 使用文本比较报告合并 MATLAB® Function 模块代码。

使用三向模型合并解决冲突

如果您的工程或当前文件夹浏览器中有模型文件在源代码管理下存在冲突,请右键点击并选择 View Conflicts。您可以在 Three-Way Model Merge 工具中解决冲突。检查您的本地文件并与冲突的修订版和基本前代文件进行比较,确定要保留的更改。您可以解决冲突并提交更改。

  1. 要尝试一个三向合并示例,请参阅使用 Simulink 三向合并解决冲突

  2. 在工程中找到冲突的模型文件,右键点击并选择 View Conflicts。如果源代码管理将文件标记为冲突,则只能在上下文菜单中看到 View Conflicts

Merge 工具会自动解决它能解决的所有差异,并在 Target 窗格中显示结果。查看自动合并选项,根据需要进行编辑,并确定如何解决任何其余冲突。

  1. 检查 Merge 报告列。

    • 在顶部,TheirsBaseMine 列显示冲突的修订版、您的修订版和这两个文件的基本前代的差异。

    • 在下面,Target 显示您要将更改合并到的本地文件。Merge 工具已自动合并它可以合并的差异。

  2. 通过点击 Next 或通过点击 TheirsBaseMine 列中的一个行,检查差异。

    合并工具显示两个模型(如果选择了一项配置设置,会看到两个模型 Configuration Parameters 对话框)。默认情况下,您会看到 TheirsTarget 模型。

  3. 使用 Merge 选项卡上的工具条按钮选择要显示的模型:Top ModelBottom Model。查看模型以帮助您确定要合并的内容。

    注意

    如果使用 View Conflicts 打开合并工具,则模型 TheirsBaseMine 是显示冲突修订版的临时文件。检查它们以决定如何合并。Target 模型是 Mine 的副本,其中包含报告中合并的结果。

  4. 通过点击 Target 窗格中的按钮,选择要为每个更改保留的版本。您可以合并已修改、添加或删除的节点,也可以合并各个参数。Merge 工具会自动为它可以解决的每个差异选择一个处理方法。您可查看这些选择并根据需要更改它们。

    在 Conflicts 列中寻找警告。对于每个冲突的项目,选择相应的按钮以使用 TheirsBaseMine

    提示

    先合并模块,再合并线;先合并状态和结点,再合并转移。然后,Merge 工具会尝试自动将所有线连接到模块。

  5. 某些差异必须由您手动合并。在 Target 窗格中,在 Conflicts 列中找到手动合并图标,该图标表明必须由您采取措施。

    在编辑器中进行手动更改。比较报告不会更新以显示您在编辑器中所做的任何更改,因此在处理完报告中所有较简单的合并后,请尝试进行手动更改。

    使用编辑器解决冲突后,在 Target 窗格中,选择检查选项以将节点标记为完成。

  6. 检查摘要表以查看自动合并的数量和需要解决的其余冲突。

    通过查看摘要表选项卡标题,检查从当前视图中筛选掉的更改。Filtered View 和 All Changes 选项卡标题显示更改的数量。默认情况下,报告会隐藏所有非功能性更改。关闭活动筛选器以查看所有标识的更改。

  7. 如果对 Target 文件中的合并选择和任何手动合并感到满意,请点击 Accept and Close。此操作将使用所有合并保存目标文件,并在源代码管理工具中将冲突文件标记为已解决。

    要保存但不标记为冲突已解决,请选择 Accept and Close > Save and Close

要了解有关解决工程中已修改文件的更改列表中冲突的更多信息,请参阅Resolve Conflicts

结合外部源代码管理工具进行三向合并

如果您是在 MATLAB 外部进行源代码管理,则可以自定义外部源代码管理工具以打开 Three-Way Merge(或打开双向合并以显示差异)。

有关说明,请参阅Customize External Source Control to Use MATLAB for Diff and Merge

在未使用源代码管理的情况下打开 Three-Way Merge

如果您没有使用源代码管理,或者要选择三个文件以进行合并,则可以使用 slxmlcomp.slMerge 函数打开 Three-Way Merge。指定要合并的文件,例如:

slxmlcomp.slMerge(baseFile, mineFile, theirsFile, targetFile);
Three-Way Merge 将打开,您可以将在 baseFilemineFiletheirsFile 中的更改合并到 targetFile 中。

双向模型合并

您可以从比较报告中合并两个 Simulink® 模型。工程或当前文件夹浏览器中的 Compare 上下文菜单项可打开双向模型合并。如果您正在使用源代码管理并希望使用三向模型合并来解决冲突,请参阅使用三向模型合并解决冲突

合并功能使您能够合并在 Simulink 中建模的设计的两个版本。您可以合并单个参数、模块或整个子系统。如果子系统是整个插入或删除的,则整个子系统只能作为整体进行合并。

  1. Comparison 选项卡上,点击 Merge Mode。Target 窗格显示在报告的底部。

  2. 使用与三向合并相同的工作流。使用按钮可选择要保留在目标文件中的差异。

    提示

    先合并模块,再合并线;先合并状态和结点,再合并转移。请参阅合并提示

  3. 在报告和模型中查看结果。点击 Save FileSave File 会复制临时目标文件并用它覆盖比较视图中右侧的文件,然后重新进行比较。

  4. (可选)要还原所有合并操作,请点击 Close Merge 而不保存文件。

  5. 在 Simulink Editor 中检查合并更改。如有必要,请连接软件未自动连接的所有线。比较报告不会更新以显示您在编辑器中所做的任何更改。

合并提示

  • 在报告的 Simulink 部分中,必须先合并模块,再合并线。必须先合并状态和结点,再合并转移,否则报告不能建立连接。

    有关如何合并涉及多个节点的更改的示例,请参阅Compare and Merge Simulink Models Containing Stateflow

  • 并非所有参数都可以合并。在本例中,目标窗格中只显示一个单选按钮,指示目标模型中的版本。

  • 有关在具有相同名称的模型之间进行合并的信息,请参阅Comparing Models with Identical Names

合并 MATLAB Function 模块代码

  1. 要合并 MATLAB Function 模块代码中的差异,请为父模型创建比较报告。

  2. 点击 Merge Mode 按钮。

    这将创建并打开名为 targetFile 的第三个文件。它可以包含来自左侧模型或右侧模型的更改。

  3. 使用报告右侧的按钮选择目标文件中所需的更改。

  4. 使用 Save File 工具条按钮在右侧模型上保存这些更改。

相关主题