"Конвертация данных" + Git. Решение проблемы различий в файлах

Программирование - Инструментарий

Конвертация данных КД+Гит КД+Гитфлоу Конвертация данных + Гит Гитфлоу Gitflow Git-flow Гитфлоу и правила обмена Gitflow и правила обмена Git-flow и правила обмена Гитфлоу в КД Gitflow в КД Git-flow в КД

98
Как известно, типовая конфигурация «Конвертация данных» обладает одним недостатком, мешающим работать с ней в Git-е. Если выгруженные из нее правила обмена загрузить в другую КД, а потом снова выгрузить, то полученные два файла будут очень сильно отличаться друг от друга, и при сравнении (diff) доработок будет невозможно провести код-ревью, равно как найти сами изменения, которые закоммитил разработчик.

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

Что было изменено и добавлено

1. Исправлена ошибка: Исчезающий Приемники в ПКС при отсутствии Источника

Если в ПКС необходимо указать только Приемник без Источника (Например, значение заполняется в коде обработчика), то при выгрузке и загрузке таких правил Приемник очищался (Рис. 1).

Эта же ошибка проявлялась и тогда, когда в настройках ПКС разработчику нужно, чтобы Источник и Приемник различались – при повторной загрузке правил Приемник приравнивался к источнику.

2. Установлено единообразие при выгрузке: Конечные пробелы в строках

При выгрузке правил не однозначно производилась выгрузка концовок строк XML для атрибутов и обработчиков конвертации, из-за чего правила, выгруженные сразу после разработки, и повторно выгруженные после загрузки их в КД, могли отличаться пробелами в конце строковых значений.

То же самое можно было наблюдать и при выгрузке кодов и наименований для ПВД, ПКО, ПКС, ПКЗ, ПОД, ПКГО, ПКГС и их групп.

Исправлено: при выгрузке все строки дополнительно обрезаются функцией СокрЛП().

3. Добавлен инструмент адаптации под Git: Порядок элементов и лишний коммит с датой

Стандартно, выгрузка объектов конвертации (ПКО, ПКС и т.д.) производится в порядке, отсортированном по реквизиту «Порядок выполнения», который можно найти на закладке «Дополнительно» любого объекта.

Проблема типовой «Конвертации данных» состоит в том, что при разработке правил обмена для новых элементов при некоторых обстоятельствах (каких именно, не стал выяснять) реквизит «Порядок» может быть заполнен одинаковым для двух соседних элементов, или не заполнен вовсе (остается нулевой).

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

Для решения этой проблемы, в меню «Отладка обработчиков», после пункта «Настройка» добавлен новый – «Адаптация под Git-flow». Основное его предназначение – выполнение корректировки реквизитов «Порядок» у всех объектов текущей конвертации (Рис. 2).

Также, дополнительно можно указать необходимость округления даты обновления правил при каждой выгрузке в репозиторий. Это дополнительно поможет избежать самого часто встречающегося изменения при коммите (Рис. 3).

Порядок внедрения

1. В рабочей конфигурации включаем возможность внесения изменений;

2. Сравнением/объединением загружаем приложенный файл конфигурации, принимаем изменения. Если ваша конфигурация уже изменена, то необходимо перенести доработки только измененных и новых объектов (см. следующий раздел);

3. Таким же образом должны обновить свои конфигурации КД все разработчики вашей команды;

4. Запускаемся в пользовательском режиме, и для всех правил обмена выполняем корректировку нумерации порядка выгрузки;

5. Выполняем первый коммит откорректированных правил обмена, чтобы все разработчики группы работали с идентичными файлами (пункты 4 и 5 достаточно выполнить одному разработчику из команды, остальные получат изменения из Гита (pull)).

Техническая информация

Для тех, кто уже залез в конфигурацию КД или пользуется другими сторонними доработками.

Перечень доработанных и добавленных объектов:

- Новые общие модули bnГитфлоу и bnГитфлоуПовтИсп

- Изменена общая форма ПравилаОбмена

- Новая общая форма bnНастройкиГитфлоу

- Изменены обработки ВыгрузкаКонвертации и ЗагрузкаКонвертации

Изменения выполнены только в коде модулей, диалоги не затронуты.

Все измененные и добавленные объекты помещены в отдельную подсистему bnГитфлоу.

Предназначен для версии "Конвертации данных" 2.1.8.2

98

Скачать файлы

Наименование Файл Версия Размер
Файл конфигурации КД+Гитфлоу
.cf 5,52Mb
15.06.17
22
.cf 1.0 5,52Mb 22 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. artbear 1099 08.06.17 16:35 Сейчас в теме
+ за Гит и решение проблемы больших различий в файлах
2. pbazeliuk 1503 08.06.17 19:55 Сейчас в теме
Функционала и описания применения методики Git-flow не увидел.
awk; artbear; +2 Ответить
3. benony 783 09.06.17 01:49 Сейчас в теме
(2) Я не ставил перед собой целью описание технологии Git-flow, я просто решил проблему невозможности применения КД в группе при использовании Гита, этим и поделился. Описание технологии - это тема отдельной статьи, на эту тему уже есть немало вебинаров и статей, в том числе ваша, Петр :)
i_a; brr; Saint13; Vlade89; gulchitai; +5 Ответить
7. pbazeliuk 1503 09.06.17 09:57 Сейчас в теме
(3) При прочтении заголовка ожидал интеграцию с git, плюс, конечно, заработали. Надеюсь следующая статья будет об этом ;)
10. user757186 13.06.17 13:37 Сейчас в теме
(3) это вам, видимо, намекнули, что термин Gitflow в заголовке не относится к статье никак. Gitflow - это только методология работы с DVCS, она даже к Git не привязана.

Вы решили проблему неидемпотентного сохранения, результат этой работы может использоваться в любой VCS и с любой методологией.
awk; benony; artbear; +3 Ответить
11. benony 783 15.06.17 10:49 Сейчас в теме
(10) Спасибо за конструктивное замечание. Заголовок поправил
12. user757186 15.06.17 11:31 Сейчас в теме
(11) А вам спасибо за разработку, очень нужную проблему решили
4. gulchitai 09.06.17 02:17 Сейчас в теме
8. bforce 415 09.06.17 16:57 Сейчас в теме
Файл правил в итоге остается один большой или он разбивается на фрагменты?
9. benony 783 10.06.17 02:28 Сейчас в теме
(8)файл остаётся один, только уменьшается на несколько килобайт за счёт обрезания пробелов в конце строк
13. LexSeIch 197 08.09.17 04:48 Сейчас в теме
Спасибо за публикацию. Берем в копилку знаний.
14. Redinternational 27 08.09.17 10:29 Сейчас в теме
Полезное решение, спасибо!
Оставьте свое сообщение