Использование Git для версии Microsoft Dynamics NAV? - PullRequest
5 голосов
/ 26 августа 2011

Я разработчик .NET, но в нашей организации также есть пара разработчиков Microsoft Dynamics NAV. В настоящее время они не используют никакой системы контроля версий. Я очень мало знаю о NAV, но, насколько я понимаю, вы можете создавать сценарии объектов из NAV и импортировать их обратно из сценариев.

В таком случае, кто-нибудь использует Git с NAV? По пути вы сталкивались с какими-то проблемами? Мне интересно, если это хорошее решение, чтобы предложить им, и является ли это более сложным в управлении, чем использование Git с .NET (что я нашел довольно легко).

Ответы [ 4 ]

5 голосов
/ 17 сентября 2011

Да, мы с большим успехом используем Git вместе с Dynamics NAV!

Плохо то, что все объекты должны быть экспортированы в txt, прежде чем Git даст смысл. Будем надеяться, что Microsoft создаст более простой подход к экспорту объектов в txt. Мы используем эту модель. Создайте Git-репозиторий с общим мастером и веткой для каждого изменяемого нами объекта. Все исходные файлы должны иметь то же имя, что и верхний файл ветви, чтобы отличать Git-трек. Используя Git таким образом, мы никогда не сливаем ничего в master. После начала использования Git намного проще работать с общими объектами и отслеживать, что другие NSC сделали с кодом. И IT-Revision рад, потому что весь код хорошо документирован, а путь к любому отступлению намного проще. Я полностью одобряю использование Git с Dynamics NAV.

Консультант Navision, в нефтяной и энергетической промышленности

4 голосов
/ 23 ноября 2011

Я использую Dynamics NAV и Git, но не одновременно.Позвольте мне объяснить, почему.

Сам Git классный (с GitHub он становится еще лучше), но порт Windows оставляет желать лучшего, если только вы не любите придерживаться unix-likeкомандной строки, так как это рекомендуемый способ установки msysGit .Инструменты с графическим интерфейсом в Windows, к сожалению, не годятся.

Мне было трудно заставить моего босса понять, почему использование распределенного контроля версий лучше, чем обычный TFS.Для бизнес-ориентированных ребят один большой центральный репозиторий чувствует себя более безопасным (потому что я плачу за свой собственный сервер, я контролирую доступ) и более надежным (я нанял системного администратора, который будет выполнять процедуры обслуживания).

Я решил не бороться с этой волей.Мы используем распределенный контроль версий в качестве промежуточной области.Все нестабильные изменения хранятся в этой области, и мы проводим тестирование в нашей команде.После окончания стабилизации объекты объединяются в центральном хранилище.Все выглядят счастливыми.

Относительно Git: Недавно я переключился на другой распределенный контроль версий - ископаемый по следующим причинам:

  • Он может делать все, что может Git;
  • Он выглядит, ощущается и действует как родной в Windows;
  • Он имеет встроенный веб-интерфейс, и я легко могу запустить его как собственную службу Windows;
  • В него встроено отслеживание ошибок, поэтому мне больше не нужны сторонние инструменты;
  • Репозиторий представляет собой один файл, поэтому я могу взять его с собой на перьевой диск везде, где захочу;

Относительно нашего решения NAV.Это более 1000 объектов, размер которых превышает 20 МБ.

РЕДАКТИРОВАТЬ: Некоторые обновления после более чем полугодового кодирования.

Мы вернулись к git.Так как его автоматическое слияние - УДИВИТЕЛЬНЫЙ .Просто чтобы выиграть ставку, я перенес решение (модифицированные стандартные объекты и новые) с NAV7CTP3 на NAV7CTP5 за 4 часа.Хотя команда из четырех разработчиков достигла того же результата, требуя почти трех недель ежедневной работы.

Git действительно имеет значение.Я полагаю, что те же результаты возможны с другими распределенными системами контроля версий.

Причина в том, что Git и другие распределенные системы сохраняют намного больше информации во время фиксации, чем, например, TFS и SVN.Это не так важно во время обычной разработки, но когда дело доходит до слияния, вся эта «избыточная» информация из Git имеет значение.

Во время слияния Git находит общую ревизию, которая запустила ветку, а затем применяет измененияиз обеих ветвей шаг за шагом - так же, как разработчик изменил код - для всех файлов в решении.

Если в обеих ветвях была изменена одна и та же строка, это показывает конфликт.Если нет, он просто сохраняет файлы в рабочую папку, готовую к фиксации.

Вот некоторые статистические данные:

  • Общее количество файлов, обработанных как в кодовых базах CTP3, так и в CTP3, составляет около четырех тысяч.каждый;
  • Общее количество объединенных объектов решения - 1170;
  • Общее количество конфликтующих файлов - 140;
  • Коэффициент успешного автоматического объединения составляет около 88%.(1170 - 140) / 1170 * 100 = 88%;
  • Большинство конфликтов - это изменения в версиях объекта - тривиальные;
  • Нетривиальные конфликты в примерно 20 файлах;
  • Тривиальный поиск и замена были выполнены для всех объединенных объектов (для исправления RunFormOnRec -> RunPageOnRec и т.1065 * Количество ошибок компиляции после импорта составляет около 50;
  • Большинство этих ошибок относятся к изменениям в стандартных объектах с CTP3 на CTP5;
  • Частота ошибочных объектов iоколо 4% (50/1170 * 100% = 4%);
1 голос
/ 02 декабря 2016

Мы используем git с Dynamics NAV с большим успехом.

Но я должен сказать, что это было нелегко.Dynamics NAV (мы используем версию 2013) не оптимизирован для разработки на git или на основе файлов.Разработка обычно выполняется непосредственно в среде разработки (классический клиент), которая сохраняет исходный код непосредственно в базу данных.

Итак, что мы сделали для поддержки git: мы создаем много полезных команд PowerShell, которые помогаютразработчики синхронизируют NAV DB с локальной папкой git.Например, у нас есть команда, которая экспортирует все объекты с измененным флагом в локальную папку git, или команда, которая импортирует все объекты между коммитами git.Мы даже используем это для автоматического обновления нашей тестовой базы данных на git push на компьютере разработчика.

Но это значит: было нелегко разработать все эти процедуры и создать сценарии.

Поэтому я бы порекомендовал вам дважды подумать о решении использовать git с Dynamics NAV.Программное обеспечение не предназначено для работы с git, поэтому вам придется проделать большую работу - и вопрос в том, не желает ли ваш начальник дать вам время для создания необходимых инструментов для бесперебойной работы.

Взгляните также на Object Manager Advanced .Это инструмент, который мы использовали раньше.Однажды я увидел превью от idyn (Компания), где они заменили клиента классической среды разработки на visual studio!Мы перешли с Object Manager Advanced на git в качестве основного инструмента разработки, потому что он не подходил для наших бизнес-случаев.Но мы все еще используем его, например, для функции Where Used , ведь это здорово!(Фильм из старой версии NAV, извините)

0 голосов
/ 30 сентября 2018

Я давно пользуюсь Git and Navision 2009 (и старше), и это того стоит.

Поскольку встроенная поддержка Git отсутствует, я экспортирую код Navision в область номера ID, котораянам разрешено программировать в большой текстовый файл.(выберите формат .txt для экспорта).Или установите разделение для всех модулей, которые я изменил по дате, и экспортируйте это.

Я написал скрипт Python , который берет этот текстовый файл и разбивает его на один файл для каждого объекта (форма,Таблица, Codeunit), так же, как если бы вы сохранили все вручную.Он сохраняет их в сетевой папке, находящейся под моим контролем Git.

Хотя для полного выполнения процесса потребовалось несколько дней, теперь весь процесс занимает всего несколько минут на обновление.Единственный недостаток этого заключается в том, что сама Navision не экспортирует, кто внес изменения, поэтому Git не будет отражать это.

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

Для самого Git я использую несколько основных команд командной строки.Чтобы проверить изменения, я использую визуальный инструмент P4MERGE, который изначально поддерживается текущей версией Git.

...