0. bforce 443 12.12.17 21:55 Сейчас в теме

Версионирование правил обмена в Git

Статья рассказывает о принципах работы скриптов, позволяющих применять систему контроля версий git и подход gitflow для версионирования правил обмена.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. harmit 16 15.12.17 10:37 Сейчас в теме
2. baton_pk 401 15.12.17 10:37 Сейчас в теме
Огонь!!!! Вот ещё буквально пару месяцев и я бы сам такое сел писать!!!
3. artbear 1184 15.12.17 10:52 Сейчас в теме
4. artbear 1184 15.12.17 10:53 Сейчас в теме
Схема с разделением одного большого файла на несколько более мелких/детальных очень удобна.
Юзали ее в разных вариантах.
Самый ранний, который я помню - разбор глобального модуля 1С 7.7 на файлы процедур/функций после разбора gcomp для выгрузки в cvs/snv. 2003 год
5. tsukanov 15.12.17 12:46 Сейчас в теме
Прикольно. Спасибо )

А эту задачу нельзя решить с помощью подходящего инструмента мёрджа?
8. bforce 443 15.12.17 21:53 Сейчас в теме
(5)
А эту задачу нельзя решить с помощью подходящего инструмента мёрджа?

Конечно можно, но нужно помнить два важных момента.

1. Человек, который выполняет слияние должен четко понимать что происходит и делать безошибочный выбор в сторону того или иного фрагмента. Причем делать это он должен безошибочно.

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

Второго пункта можно избежать, если перед слиянием или в момент коммита будет выполняться сортировка правил (у меня в репозитории есть шаблон сортировки). Иначе, мне кажется, нужно обладать довольно уникальными способностями, чтобы переварить это все в голове (особенно, когда файл у вас на 50 тыс. строк).
9. tsukanov 15.12.17 22:41 Сейчас в теме
(8) Я немного о другом. Мне кажется можно сделать дифф (утилиту), который будет игнорировать сортировку и прочее. Ну и соответственно мёрдж на основе этого диффа. По аналогии как конфигуратор модули сравнивает/объединяет по процедурам.
10. bforce 443 16.12.17 12:23 Сейчас в теме
(9)
По аналогии как конфигуратор модули сравнивает/объединяет по процедурам.

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

Так что, да, можно использовать и этот метод. Однако правильность объединения придется всегда контролировать глазами, так как встроенный механизм не позволяет сделать двухстороннего сравнения. Поэтому работать с git лучше.
12. tsukanov 16.12.17 14:19 Сейчас в теме
(10) Действительно. Я уже и забыл, что в конвертации есть это. Спасибо что напомнили )

Посмотрел тут: https://infostart.ru/public/177339/
Двухстороннее сравнение - это three-way merge? Судя по статье оно там есть.
13. artbear 1184 16.12.17 14:55 Сейчас в теме
(12) Двухстороннее это не three, это two :)
14. tsukanov 16.12.17 15:10 Сейчас в теме
(13) Ну я пытался угадать )) А что за зверь тогда? Просветите, плиз )
15. bforce 443 16.12.17 21:52 Сейчас в теме
(12)
Обычно двухстороннего сравнения достаточно (в конвертации как раз такое), чтобы понять есть ли конфликт, но понять это нужно будет в голове. Дважды измененные (как при работе на поддержке от конфигурации поставщика) стандартный инструмент не показывает. Нужно будет все измененные объекты где-то зафиксировать, чтобы потом сравнить с таким же списком из другой задачи или сравнивать по одному.
В общем, сомнительное удовольствие. Но, если нравится, то пожалуйста. Меня на такую монотонную работу надолго не хватает. А если она еще еженедельная/ежедневная, то ...
16. tsukanov 16.12.17 22:33 Сейчас в теме
(15) Понятно. Но вообще странно, что нет фильтра по дважды измененным. Мне кажется его там добавить труда не составит.
6. olegtymko 550 15.12.17 15:21 Сейчас в теме
Идея очень хорошая! Жирный плюс. Хранение в таком же виде правил регистрации пока не планируется?
7. bforce 443 15.12.17 21:40 Сейчас в теме
(6)
Хранение в таком же виде правил регистрации пока не планируется?

Мы их в своей работе не используем, так как выгружаются огромным набором за период. Поэтому такой задачи не стояло, но ее можно решить тем же способом.
11. baton_pk 401 16.12.17 12:27 Сейчас в теме
а ещё подсветка синтаксиса на bsl-файлах отработает, а на bsl внутри xml лесом пошлёт. :) мелочь, а приятно.
ну и git blame отдельно по каждому куску.
17. kuzyara 1029 18.12.17 14:27 Сейчас в теме
Почему не префиксы вместо искусственной иерархии ext?
Будет ли такое же версионирование декомпилированных форм?
20. bforce 443 18.12.17 22:40 Сейчас в теме
(17)
Почему не префиксы вместо искусственной иерархии ext?

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

К тому же, если у меня 10 ПКО в одной группе и на каждый созданы все обработчики (8 штук), то это уже 90 файлов в одном каталоге. Не очень удобно.

(17)
Будет ли такое же версионирование декомпилированных форм?

Не понял. Какие формы в правилах обмена?


(18)
А может проще из КД сразу выгружать дополнительно в нужном формате?

Со стороны конечного пользователя-разработчика, конечно, проще. И это будет гораздо удобнее. Но только для него одного. Но есть и минусы, которые перевесили.
1. Сложность. Надо очень аккуратно впилиться в типовую конфигурацию и ничего при этом не поломать, ни в ней, ни в своей логике разбора. Это сложнее, чем отдельный скрипт.
2. Зависимость. Если смотреть не только на разработчика, а на ПМ-щика, автоматизированное тестирование и деплой, то тут дополнительная зависимость от КД ни к чему. Лишние действия по сбору и разбору. В КД, кажется, нет Параметров запуска, чтобы что-то автоматизировать.
Но реализовать такое, конечно, хотелось. Какой-нибудь поставкой (чтобы легко интегрировать), выделить обособленным модулем, расставить где нужно свои вставки.
18. acsent 1149 18.12.17 15:24 Сейчас в теме
А может проще из КД сразу выгружать дополнительно в нужном формате?
19. Totoro 552 18.12.17 21:13 Сейчас в теме
21. stas_ganiev 17.02.18 07:41 Сейчас в теме
Круто! Очень круто!!!
За упоминание моей работы спасибо! :)
22. AlexWhite 190 23.03.18 08:57 Сейчас в теме
Спасибо! Если захотите что-то еще усовершенствовать в этом решении и понадобится финансирование, обращайтесь!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Разработчик 1С
Санкт-Петербург
зарплата от 140 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 90 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Аналитик 1С
Москва
зарплата от 120 000 руб. до 200 000 руб.
Полный день