Разрешите конфликты со слиянием с тремя путями Simulink

Этот пример показывает вам, как использовать Simulink® Слияние С тремя путями, чтобы разрешить конфликты в моделях Simulink. Можно просмотреть и объединить различия в модели Simulink в получившемся отчете.

Изменения модели Simulink в этом примере

Этот пример показывает вам, как использовать Слияние С тремя путями, чтобы понять и разрешить различия между двумя конфликтными конструктивными изменениями Simulink. Пример проект Simulink находится под системой контроля версий (Git в этом примере) и содержит изменения, которые конфликтуют с другим пользователем. Вы будете использовать инструмент Three-Way Model Merge, чтобы разрешить конфликты. Вы исследуете свой локальный файл ("Мой"), конфликтная версия ("Их") и общий предок этих двух файлов ("Основа").

Конфликт в этом примере был вызван текущим пользователем, пытающимся объединять изменения другого пользователя на основном ответвлении Git ('Их' изменения) в их ответвление Task1 (содержащий изменения "Шахты").

Их: подсистема экспериментальной модели была обновлена, чтобы использовать явный блок усиления для амплитуды входных команд пилота. Время остановки Моделирования было также обновлено.

Мой: текущий пользователь изменил некоторые параметры конфигурации для модели.

Инструмент Merge автоматически объединяет не конфликтовавшие различия. Выполните шаги ниже, чтобы рассмотреть выбор автослияния, редактирование при желании, и решить, как разрешить любые остающиеся различия. Это затем позволит вам передавать разрешенную модель системе контроля версий.

Настройте пример проект Simulink

Запустите следующие команды, чтобы создать и открыть проект.

slxmlcomp.internal.examples.setupThreeWayMergeExample();
Initializing: Project Path
Setting up working folders
Identifying shadowed project files
Running: /tmp/BR2018bd_909044_106362/publish_examples0/bml.batserve.125623/work/MATLAB/projects/slexamples/airframe/utilities/set_up_project.m
A copy of the original file "slproject_f14.slx" has been created because it was last saved in an earlier version of Simulink. To recover the original version, rename the file "slproject_f14.slx.r2017b" as "slproject_f14.slx".

You can turn this feature off using the <a href="matlab:slprivate('showprefs')">Simulink Preferences</a>. Click <a href="matlab:com.mathworks.services.Prefs.setBooleanPref('SimulinkShowPersistentBackupNotification',false)">here</a> if you don't want to see this message again.

Откройте слияние с тремя путями Simulink

Ищите противоречивые файлы в представлении файлов Проекта Simulink. slproject_f14 файл показывает красный символ предупреждения в столбце Git, который указывает на конфликт.

1. Чтобы видеть подробный отчет о конфликтах, щелкните правой кнопкой по slproject_f14 файлу и выберите 'View Conflicts'.

Просмотрите изменения

Инструмент Three-Way Merge показывает изменения в двух проектах Симулинка, которые вызвали этот конфликт файла.

  • Наверху, Их, Основной и деревья Шахты показывают различия между конфликтной версией, вашей версией и основным предком этих файлов.

  • Внизу, область Target показывает файл, что вы объедините изменения в. Это - временный файл и будет скопировано в проект Simulink, когда вы принимаете решение принять результат слияния.

2. Исследуйте различие путем нажатия на строку в одном из деревьев. Инструмент слияния отображает изменение для каждой модели в редакторе, например диалоговое окно Simulink Editor или Configuration Parameters, справа от окна Three-Way Merge.

3. Выберите модели, чтобы отобразиться с кнопками панели инструментов на вкладке Merge в разделе Highlight: Топ-модель или Нижняя Модель.

Рассмотрите автоматические слияния

Инструмент слияния автоматически объединяет самые непротиворечивые различия.

4. Исследуйте первое изменение наверху 'Их' дерево путем нажатия на строку под названием 'PilotGain'. Этот узел был объединен автоматически, и можно настроить автоматический выбор с помощью переключателей в целевой панели. Если вы хотите, рассматриваете другой автоматический выбор слияния.

Решение конфликтов

Существует два типа различия, которые требуют пользовательского действия.

Конфликт: инструмент слияния не может автоматически разрешить эти различия, и необходимо выбрать, какой дизайн вы хотите в конечном файле. Ищите предупреждения в столбце Конфликтов.

Ручное слияние: Некоторые различия должны быть объединены вручную в Simulink или проигнорированы. В Целевой панели эти элементы обозначаются значком с карандашом в столбце Конфликтов.

5. Выберите строку 'StickCommand_rad'. Это различие требует ручного слияния, обозначенного карандашом на значке в столбце Конфликтов.

Разрешите различие в изменении строки в конечном файле путем переименования подключенного параллельно к выводу блока под названием 'Пилот' в Редакторе Simulink от 'StickCommand_rad' до 'Экспериментального Вывода'.

После решения различия сохраняют изменения в Редакторе и отмечают разрешенное использование изменения ручного управления слиянием в столбце Конфликтов.

Отметьте - отчет слияния не обновляет, чтобы показать любые изменения, которые вы вносите в Редакторе.

6. Используйте 'Следующую' кнопку панели инструментов, чтобы рассмотреть и разрешить изменения, пока вы не достигнете конфликта. Этот параметр StopTime был изменен обоими пользователями и конфликтуется. Разрешите конфликт с помощью изменения 'Шахты'. Установите переключатель 'Mine' рядом с StopTime в Целевой панели.

Измените фильтры

По умолчанию отчет скрывает все нефункциональные изменения, такие как то, чтобы менять местоположение элементов.

7. Выключите фильтры с помощью раздела панели инструментов Фильтров, чтобы исследовать все различия между этими проектами.

Примите изменения

8. После того, как вы разрешите все отфильтрованные и неотфильтрованные изменения, нажмите 'Accept & Close'. Инструмент слияния закрывает отчет и модели, принимает результат слияния в конечном файле и отмечает конфликт, как разрешено в инструменте системы контроля версий (Git в этом примере). Разрешенные конфликты позволяют передать изменения в системе контроля версий и продолжить вашу работу.

Была ли эта тема полезной?