Переход на разработку с хранением в Git, часть 1, подготовка репозитория

29.09.19

Разработка - Групповая разработка (Git, хранилище)

Описываю свой опыт переноса разработки в git в малой группе. В тех статьях, которые уже есть, описывается полная цепочка. Думаю своими статьями снизить порог входа в достаточно важную часть разработки.

Вводные

1. Веду разработку через расширения и внешние обработки.

2. Использую Хранилище конфигурации один контур, в комментариях указываю номера задач.

3. С помощью GitSync вручную из хранилища конвертирую в Git, который связан с трекером, можно поставить по расписанию.

4. Рабочая база подключена к хранилищу только на чтение.

Сталкиваюсь с ограничениями:

1. Не переключиться на решение срочной задачи, если есть наработки по текущей.

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

3. Потенциальный перенос наработок в рабочий контур через "сравнение/объединение" занимает много времени.

4. Жесткая привязка по доступу к хранилищу конфигурации

5. Проблема с доставкой наработок если у клиента нет хранилища (дубли файлов на локальном месте и на сервере)

Вариант решения:

1. Сконвертировать хранилище/конфигурацию в формат XML или EDT и перенести в GIT

2. Сделать автоматическую сборку cf/cfe и доставку до сервера клиента.

3. Осваивать групповую разработку через git.

Описание форматов и конвертации:

1. "Рабочий", в базе данных , получаем из CF "1cv8 DESIGNER /LoadCfg" либо из XML "1cv8 DESIGNER LoadConfigFromFiles"

2. Упакованный cf/cfe, получаем выгрузкой из базы данных "1cv8 DESIGNER /DumpCfg"

2. XML, получаем выгрузкой из базы 1cv8 "DESIGNER /DumpConfigToFiles" либо выгрузкой из проекта EDT "ring edt workspace export"

3. Проект EDT, схож по структуре с XML, но с дополнительными сервисными описаниями, получаем из XML "ring edt workspace import"

При работе с GIT сравнивать ветки разработки через интерфейс можно только с помощью EDT (смотреть различия в XML сложнее). 

При конвертации из CFE в XML при использовании пустой базы конфигурация БД не затрагивается и не слетают "привязки" к базе "родителю" расширения.

Про EDT

Внешне идея хорошая, но:

1. Потребляет очень много ресурсов процессора и дискового пространства.

1.1 В "workspace\.metadata\.plugins\com._1c.g5.v8.bm.core\" судя по объему дублируется/кешируется проект.

2. Нет видео с примерами работы, только со скриншотами от УЦ1, многие "сложные" места просто не показываются.

3. Не стабильно работает импорт/экспорт, периодически при запуске выдает пачку ошибок. Из XML в EDT загружаются не все данные, например <Vendor> из расширения загружен не был, дальше разбираться не стал.

3.1 При конвертации расширения из XML в EDT используется переменная "base-project-name", если привязка не прошла, то процесс не останавливается и в логах непонятно где смотреть ошибку.

После нескольких проб решил использовать XML формат. В часть проектов пишу в одного, по сути нужна сборка и доставка до клиентских серверов (замена хранилища конфигурации развернутая в сервисе). При групповой разработке буду учится/делать слияния, если видели статьи по методике применительно к метаданным и формам то буду раз увидеть в комментариях, применительно к коду инструментарий уже есть.

Перенос из конфигурации/хранилища в Git

Небольшое отступление:

Для переноса в формат EDT возможно использовать ГитКонвертер, https://github.com/1C-Company/GitConverter/tree/develop. Ссылка на dev версию потому что в ней уже реализована выгрузка расширений. Из этого проекта почерпнул блоки по специфике формирования bat для работы с git.

Для переноса из хранилища самое лучшее это https://github.com/oscript-library/gitsync. Использовать хранилище в повседневной работе для меня избыточно, буду грузить напрямую в GIT, для этого реализовал инструмент в виде отдельной конфигурации. Для работы с целевой базой нужно выйти из конфигуратора. Инструмент пишется в том числе как прототип для TurboConf, если сложится хорошо, то будет подобное в самом конфигураторе.

Ссылка на проект https://gitlab.com/malikov-pro/1c_git_worker. Для скачивания сборки нужно пройти по ссылке:

 
 Скриншот с ссылкой

Что сейчас умеет:

1. Фиксировать настройки связи базы с локальным git репозиторием.

 
 Страница настроек

2. Запускать основные команды

 
 Страница команд

3. Просматривать что именно запускалось в командной строке и результат запуска на форме справочника последние запущенные, всю историю храню в РС.

 
 Журнал

 

Для сравнения используется сборка через временную базу в каталоге tmp проекта. Результат сравнения записывается туда же. Планирую загружать и хранить в журнале команд.

Для работы с репозиторием использую ssh, поэтому логина/пароля в настройках нет.

 
 Прием настройки для SSH

Прием работы:

1. Создаем новую ветку для разработки. 

2. Делаем в нее коммиты, смотрим как собралось.

2.1 Если работает нормально то переходим на master ветку и объединяем (сам делаю через merge).

Хорошая документация по workflow https://www.atlassian.com/git/tutorials/comparing-workflows, планирую с развитием инструмента перевести на русский и дополнить спецификой использования с 1С.

Функционал по работе с объединением в разработке.

Сборка:

Реализована за счет gitlab pipeline. Файлы настройки сборки формируются из базы. Проект сам себя собирает. Сборка расширений работает.

В настройках указан тег "windows-dev" для запуска только на отдельно настроенном runner.

Установка: https://docs.gitlab.com/runner/install/windows.html

Регистрация: https://docs.gitlab.com/runner/register/#windows

Для корректной сборки нужно указать переменные проекта: https://docs.gitlab.com/ce/ci/variables/

Для доставки по FTP можно использовать дополнительный bat файл включив его в отдельный этап сборки:

 
 Пример доставки на FTP

 

Результат:

Возможно вести удаленную разработку с сохранением истории изменений и автоматической сборкой для доставки клиенту.

 

Благодарю за внимание.

Буду раз дельной критике и информации по работе с git + 1с_xml.

См. также

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9149    78    4    

110

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1211    bayselonarrend    3    

37

Автоматизация процесса разработки с помощью сервиса GitFlic

Групповая разработка (Git, хранилище) Бесплатно (free)

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    1868    user1989937    6    

15

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

Групповая разработка (Git, хранилище) Бесплатно (free)

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    3785    bayselonarrend    15    

61

Насколько глубок 1С-ный GitHub?

Групповая разработка (Git, хранилище) Бесплатно (free)

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    7848    bayselonarrend    50    

86

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2784    kamisov    17    

57

Отдай корень! Библиотека OneScript для получения информации о захваченных объектах в хранилище

Групповая разработка (Git, хранилище) Бесплатно (free)

Хранилище конфигурации 1С - это инструмент групповой разработки. Работают с хранилищем следующим образом: захватывают какой-либо объект, редактируют, потом отдают его в хранилище. Хранилище помечает уже захваченные объекты и не дает возможности захватить их другим пользователям. Это рождает и самый большой недостаток хранилища - невозможность работы с одним объектом нескольких пользователей, например в случае доработки разных методов в одном большом модуле. Корень конфигурации - это самый верхний ее узел. Только захватив корень, мы можем добавить в конфигурацию новые общие модули, документы, справочники, регистры и подобное. Только захватив корень можно изменить настройки поддержки конфигурации. Соответственно, если корень захвачен одним программистом, другой программист не может добавить новые объекты или снять что-то с поддержки. Потому то и всплывает эта фраза - отдай корень, мне нужно тоже что-то добавить.

26.12.2023    1345    ardn    1    

26

Git Code Review - инструмент для рецензирования кода

Групповая разработка (Git, хранилище) Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Git Code Review - инструмент, позволяющий быстро анализировать изменения из git-репозитория прямо в 1С

1 стартмани

20.12.2023    3963    59    salexdv    26    

81
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kwazi 615 22.01.20 13:32 Сейчас в теме
https://github.com/marmyshev/edt_git_sync
Это не то же самое? В вашей версии можно без хранилища обойтись насколько я понял.
Правильно я понял, что git используется только как хранилище кода?
2. malikov_pro 1292 22.01.20 13:36 Сейчас в теме
(1) Немного разное, мой подход без использования хранилища конфигурации 1С. В идеале в конфигураторе имеем пару кнопок по управлению ветками, пушем наработок и сравнению/объединению после мержа, думаю это реализовано в каком то варианте в EDT, но он на данный момент для меня не применим.
3. kwazi 615 22.01.20 13:41 Сейчас в теме
(2) а можно несколько расширений держать в одном репозитории? У клиента их больше 10-ка в одной базе.
6. malikov_pro 1292 22.01.20 14:38 Сейчас в теме
(3) в проекте git создается папка src, в ней под каждое расширение своя папка, без разницы через какой инструмент, хранилище конфигурации под каждое расширение свое.
acanta; kwazi; +2 Ответить
4. Xershi 1475 22.01.20 13:49 Сейчас в теме
Я так понял основная проблема, что у вас франч, и нет времени на организацию инфраструктуры или продумывания архитектуры решения.
Все озвученные минусы отсекаются либо административно, либо продуманным подходом.
Конечно когда шапка горит, то данный подход оправдан, но если задуматься накой так работать?
Ну кроме галки умею юзать гит в резюме существенных плюсов не нашел
Хотя один есть куча клиентов на поддержке и у каждого своя хотелка, которую не внедряют другому без доп оплаты. Но опять же так делают обычно только франчи из=за жадности, независимые разработчики унифицируют все.
7. malikov_pro 1292 22.01.20 14:40 Сейчас в теме
(4) Я фрилансер, активно использовал gitsync. Git удобен в том числе и для доставки кода до клиента, разрабатываешь локально, пушишь, пришел к клиенту, получил изменения и применил к базе. С хранилищем конфигурации по сетевой инфраструктуре чуть сложнее.
5. acanta 22.01.20 14:15 Сейчас в теме
Если я правильно понимаю, гит это инструмент для администрирования совместной работы распределенной команды. У франчайзи есть собственный администратор как правило, а за проекты, требующие распределения они не берутся.
8. malikov_pro 1292 22.01.20 14:42 Сейчас в теме
(5) Для совместной работы, администрирование и управление поверх, при необходимости. "а за проекты, требующие распределения они не берутся." - по разному, зависит о того кто управляет процессом.
9. kwazi 615 22.01.20 14:44 Сейчас в теме
Я видимо пропустил какое-то важное исследование франчайзи. Или есть какой-то тайный кодекс работы франчайзи... Такой свиток, грааль, который хранится у Нуралиева и его дают прочитать всем новоиспеченным франчам.
10. malikov_pro 1292 22.01.20 14:53 Сейчас в теме
(9) Нет не пропустили, просто специфика работы вытекающая из непонимания клиентов и отношению к ним поставщиков, когда нужно "Закрыть проект и подписать листы учета времени", а потом "хоть трава не расти", это подход руководства больше. Пробовал раза три, хватило, перешел во фриланс, хотя как вариант роста +- норм.
11. kwazi 615 22.01.20 16:22 Сейчас в теме
(10)
Это особенность работы по проекту. У проекта есть жесткие сроки и финансовые ограничения. Поэтому и возникают казусы. Клиенты тоже не хотят погружаться в 1С. Говорят: Сделайте нам красиво. Многие фрилансеры тоже так работают. Когда фанфары оттрубили и проектник свалил наступают суровые будни. Рядом только сисадмин, который разводит руками и попаболь.
Но не все так работают. Есть франчайзи, которые расчитывают на долговременное сотрудничество. Вам просто не повезло, наверное.

Не люблю навешивать ярлыки и другим не советую...
12. kolya_tlt 86 21.04.20 14:34 Сейчас в теме
так где собственно переход то и снижение порога входа? я как сидел в конфигураторе и не понимал о чем пишут, так и не перестал понимать.
Resident1C; ixijixi; +2 Ответить
13. malikov_pro 1292 21.04.20 20:51 Сейчас в теме
(12)
"так где собственно переход то и снижение порога входа?" - обработка как пример работы с git в контексте 1С.

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

Напишите что именно непонятно и какую задачу решаете.
14. ixijixi 1777 21.04.20 21:24 Сейчас в теме
(12) +1, тоже заголовку порадовался, а в итоге опять ничего не понял)
Resident1C; +1 Ответить
Оставьте свое сообщение