Управление версиями Matlab Simulink с несколькими разработчиками
Мы используем Matlab Simulink для разработки моделей (и автокодирование в режиме реального времени) в команде нескольких разработчиков.
В настоящее время мы используем Visual Source Safe (да, я знаю его ужасно) для управления версиями, используя блокировки, чтобы предотвратить конфликтующие изменения.
Мы хотим перенести нашу программу на другую систему управления версиями (svn, hg или git), но мы обеспокоены выполнением слияний и различий в файлах Simulink.mdl.
Есть ли у кого-нибудь полезный опыт выполнения слияний в файлах Simulink?
Ответы
Ответ 1
Слишком сложное слияние файлов модели Simulink. Здесь статья, которая дает некоторую информацию об управлении конфигурацией при использовании Simulink.
Как и для diffs, в генераторе отчетов Simulink есть разностный инструмент, который я верю в R2008b+. Здесь ссылка в документ для этой функции.
Mike
Ответ 2
SimDiff будет делать то, что вам нужно. Вы можете связать его с любой системой управления конфигурацией/версией программного обеспечения, которая вам нравится.
В документе SAE 2007 SAE, на который ссылается Майк, было написано до того, как SimMerge (позднее переименованный в SimDiff 4) был доступен. Теперь вы можете использовать современную систему управления конфигурацией программного обеспечения, такую как AccuRev или IBM Unified Change Management для ваших проектов Simulink.
Есть как минимум две новые статьи, которые заменяют бумагу 2007 года. Один из Xilinx показывает, как интегрировать SimDiff с SVN/Subversion.
Раскрытие информации: Я участвовал в разработке SimDiff с 2005 по 2015 год.
Ответ 3
Как упоминалось, Mathworks работает над инструментами разграничения для Simulink, в основном экспортируя их в файлы XML, а затем сравнивая их. Хотя я не верю, что это поможет слить файлы больше, чем любая существующая система управления версиями.
Я начал использовать Mercurial для наших кодов MATLAB и моделей Simulink. Он работает хорошо и быстро на некоторых довольно крупных моделях simulink, но, как единый разработчик, мне еще не приходилось разбираться в каких-либо сложных слияниях. Простой diff и слияние обычно вызывают несколько конфликтов, которые являются не чем иным, как синтаксическими изменениями, как правило, отметками даты и номерами версий.
Мое предложение было бы, если возможно, использовать ссылки на модели. У меня есть большая модель, которая в основном связывает полдюжины подмоделей с использованием ссылки на модель. Каждая вспомогательная модель находится под управлением версиями, и только один разработчик отвечает за подмодель, тогда она борется с множеством проблем при объединении разных моделей simulink.
Ответ 4
Mathworks рекомендует использовать Simulink Projects, который является новым в R2011b. Подробнее см. В Seth на блоге Simulink.
Simulink Projects будет интегрировать MATLAB/Simulink с вашей системой управления версиями, а также предоставить дополнительные функции.
Что касается слияния Simulink, я считаю, что лучшая практика заключается в том, чтобы избежать его как можно большего. Это можно сделать, используя ссылки на модели и ссылки библиотек, где это необходимо, чтобы каждый элемент конфигурации был достаточно мал.
Ответ 5
DiffPlug может отличать файлы Simulink графически, и он интегрируется в SVN и Git. Он имеет интерфейс командной строки, поэтому вы, вероятно, можете интегрировать его с SourceSafe тоже...
http://www.diffplug.com/products/dp.simulink.differ
Ответ 6
Недавно Xilinx опубликовала примечание
Ответ 7
Хотя у меня нет определенного опыта, svn отлично справляется с нетекстовыми файлами. У вас есть два варианта:
- Если файлы mdl уже не являются бинарными (прошло слишком много лет с тех пор, как я использовал Simulink), установите для файла mdl файл svn: mime-type свойство "application/octet-stream" с помощью функция автообновления или путем задания свойства вручную с помощью svn propset. Он не будет пытаться объединиться, и при конфликтующей проверке потребуются действия оператора для устранения различий.
- Настройте свой репозиторий как блокирующий, например VSS (без пламени). Вот вам пошаговое руководство.
Ответ 8
Пожалуйста, взгляните на http://www.ikv.de/mediniunite/ Возможно, это помогает решить ваши проблемы.
С medini unite мы предоставляем полезный инструмент Diff/Merge для Matlab/Simulink/Stateflow, который очень прост в использовании и, конечно, интегрируется в разные системы управления версиями.