Управление версиями Matlab Simulink с несколькими разработчиками

мы используем Matlab Simulink для разработки моделей (и автокодирования в режиме реального времени) в команде нескольких разработчиков.

в настоящее время мы используем Visual Source Safe (да, я знаю его ужасно) для контроля версий, используя блокировки для предотвращения конфликтующих изменений.

мы хотели бы перенести нашу программу в другую систему управления версиями (svn, hg или git), но мы обеспокоены выполнением слияний и различий на Simulink .mdl файлы.

кто-нибудь есть полезный опыт выполнения слияний в файлах Simulink?

8 ответов


текстовое слияние файлов модели Simulink будет затруднено. Вот это статьи что дает некоторую информацию об управлении конфигурацией при использовании Simulink.

Что касается различий, есть инструмент дифференцирования в генераторе отчетов Simulink, начиная Я верю в R2008b+. Вот ссылке к doc для этой функции.

Майк


SimDiff будет делать то, что вам нужно. Вы можете соединить его с любой системой управления конфигурацией программного обеспечения / контроля версий, которая вам нравится.

документ 2007 SAE, на который ссылался Майк, был написан до того, как SimMerge (позже переименован в SimDiff 4) был доступен. Теперь для проектов Simulink можно использовать современную систему управления конфигурациями программного обеспечения, например AccuRev или IBM Unified Change Management.

есть по крайней мере две новые статьи, которые заменяют Бумаги 2007. Один из Xilinx показывает, как точно интегрировать SimDiff с SVN / Subversion.

раскрытие информации: я участвовал в разработке SimDiff с 2005-2015 годов.


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

Я начал использовать ртутный для наших моделей кода MATLAB и Simulink. Он работает хорошо и быстро на некоторых довольно больших моделях simulink, но как один разработчик мне не приходилось иметь дело с какими-либо сложными слияниями еще. Простое diff и merge обычно вызывает несколько конфликтов, которые являются не более чем изменениями синтаксиса, обычно штампами даты и номерами версий.

мое предложение было бы, если возможно, использовать ссылки на модели. У меня есть большая модель, которая в основном связывает полдюжины подмоделей, используя ссылки на модели. Каждая подмодель находится под контролем версий, и только один разработчик несет ответственность за подмодель, то это побочные шаги много проблем в слиянии различных simulink модели.


в Mathworks рекомендуется использовать Проекты Simulink, который является новым в R2011b. Вижу сет на блоге Simulink для сведения.

проекты Simulink интегрируют MATLAB / Simulink с вашей системой управления версиями, а также предоставляют дополнительные функции.

Что касается слияния Simulink, я считаю, что текущая лучшая практика-избегать его как можно больше. Это можно сделать с помощью ссылок на модели и ссылок на библиотеки, где целесообразно, чтобы гарантировать, что каждый элемент конфигурации достаточно мал.


DiffPlug может графически различать файлы Simulink, и он интегрируется в SVN и Git. Он имеет интерфейс командной строки, так что вы, вероятно, могли бы интегрировать его с SourceSafe тоже...

http://www.diffplug.com/products/dp.simulink.differ


Xilinx недавно опубликовал app Примечание подробно, как настроить Subversion с SimDiff и SimMerge для командной разработки моделей Simulink.

из приложения Примечание:

" в этом примечании к приложению содержится обзор того, как выполнять управление версиями исходного кода и командный дизайн с помощью инструмента System Generator. Эти задачи могут быть выполнены с помощью функций управления версиями, встроенных в программную среду MATLAB ® Simulink®, или с внешней системой управления источником. В то время как эта заметка приложения фокусируется на Subversion, хорошо известная, бесплатная система управления с открытым исходным кодом, другое программное обеспечение для управления версиями, такое как CVS, MS Source Safe и Clear Case, также может использоваться-в зависимости от среды разработки. Это приложение также демонстрирует, как графически сравнить и объединить модели на основе конструкций с помощью SimDiff и SimMerge внешних пакетов программного обеспечения от Ensoft."


хотя у меня нет определенного опыта, svn хорошо обрабатывает нетекстовые файлы. У вас есть два варианта:

  1. Если файлы mdl еще не являются двоичными (прошло слишком много лет с тех пор, как я использовал Simulink), установите свойство file svn:mime-type для файлов mdl в "application/octet-stream", используя функция автоматического реквизита или установив свойство вручную с помощью SVN propset. Он не будет пытаться объединить, и при конфликтной проверке потребуется действие оператора для устранить различия.
  2. настройте свой репозиторий на блокировку, например VSS (без пламени, пожалуйста). Вот хороший пошаговое руководство.

пожалуйста, взгляните на http://www.ikv.de/mediniunite/ Возможно, это поможет решить ваши проблемы. С medini unite мы предоставляем полезный инструмент Diff / Merge для Matlab / Simulink / Stateflow, который очень прост в использовании и, конечно же, интегрируется в различные системы управления версиями.