-
Notifications
You must be signed in to change notification settings - Fork 77
Как это работает
Конфигурация 1С:ГитКонвертер разработана для того, чтобы:
- выполнить первоначальную конвертацию хранилища конфигурации в репозиторий Git,
- автоматически, по расписанию, обновлять ветку (например master) удалённого репозитория актуальным состоянием конфигурации из основного хранилища.
Эта конфигурация может одновременно конвертировать и синхронизировать несколько хранилищ конфигурации и репозиториев. Для понимания принципов её работы рассмотрим пример с единственным хранилищем конфигурации, которое синхронизируется с удалённым репозиторием.
Компьютер, на котором установлена серверная информационная база с конфигурацией 1С:ГитКонвертер, будем называть сервер 1С:ГитКонвертера. 1С:ГитКонвертер получает данные из хранилища конфигурации, преобразует их в формат EDT, и фиксирует их в локальном репозитории, который находится на сервере 1С:ГитКонвертера. Затем он отправляет эти изменения в удалённый репозиторий Git, который находится на некотором компьютере, который назовём Git-сервер. Этот удалённый репозиторий и есть "хранилище проекта" для команды разработчиков (разработчик 1 и разработчик 2).
1С:ГитКонвертер одну за другой, по очереди, читает версии конфигурации из хранилища и преобразует их. Процесс преобразования одной версии состоит из следующих этапов:
- Используя интерфейс командной строки 1С:Предприятия 8 в каталоге выгрузки версий создаётся информационная база, в которую из хранилища получается очередная версия.
- Из информационной базы эта версия выгружается в XML файлы.
- Используя интерфейс командной строки EDT, XML выгрузка конфигурации преобразуется в фалы внутреннего формата EDT.
- Файлы внутреннего формата EDT помещаются в рабочий каталог проекта, который находится в локальном каталоге Git.
- Командами Git'а выполняется фиксация изменений в локальном репозитории и отправка их в удалённый репозиторий.
Из этой схемы важно понять, что когда вы будете настраивать конвертацию хранилища в 1С:ГитКонвертере вам нужно будет указать два каталога:
- Каталог выгрузки версий,
- Локальный каталог Git.
Для оптимальной производительности важно, чтобы оба этих каталога находились на одном логическом диске. Тогда будет использоваться перемещение версий средствами операционной системы. В противном случае будет выполняться копирование данных, что может занять дополнительное время.
Также из этой схемы вы можете понять, что на сервере 1С:ГитКонвертера вам понадобится установить следующее программное обеспечение (подробнее об этом рассказывается в разделе Установка программного обеспечения на сервер 1С:ГитКонвертера):
- Сервер и клиент 1С:Предприятия 8 для работы конфигурации 1С:ГитКонвертер,
- Клиенты 1С:Предприятия 8 тех версий, на которых работают хранилища конфигураций, которые вы собираетесь конвертировать,
- СУБД, поддерживаемую 1С:Предприятием 8, для хранения информационной базы 1С:ГитКонвертера,
- EDT для преобразования XML файлов выгрузки конфигурации в формат EDT,
- Git для фиксации изменений в локальном репозитории и отправки их в удалённый репозиторий.
Конфигурация 1С:ГитКонвертер обладает возможностями, которые вы можете использовать опционально, по желанию. Это такие возможности как:
- Использование Git LFS - для хранения больших бинарных файлов вне репозитория; использование этой возможности позволяет ускорить операции с репозиторием.
- Очереди выполнения - для балансировки нагрузки, создаваемой фоновыми заданиями, путём ограничения количества операций, выполняемых в каждой очереди.
- Копии хранилища - для параллельной загрузки версий одного хранилища конфигурации.
Перед выполнением дальнейших шагов желательно сначала ознакомиться с этими возможностями, потому что, например, решение об использовании Git LFS необходимо принять до начала работы с 1С:ГитКонвертером, основываясь на размере вашего хранилища конфигурации, количестве версий в нём и наличии конфигураций поставщиков. Другие возможности вы сможете задействовать и потом, уже в процессе работы.
Для того, чтобы создать правильную историю изменений объектов в Git репозитории аналогичную Хранилищу 1С необходимо учитывать особенности двух систем:
- Хранилище конфигураций 1С:Предприятия сохраняет изменения по объектам, идентификатором которого является внутренний UUID, недоступный для редактирования в Конфигураторе.
- Репозиторий Git отслеживает изменения контента файлов при их перемещении.
В случае, если объект в Конфигураторе был переименован - Хранилище 1С:Предприятия сохраняет новую версию того же объекта. Но если выгрузить конфигурацию в файлы - этот переименованный объект окажется в другом месте файловой иерархии, по сравнению с предыдущей версией. Если удалить объект, а потом создать с таким же именем - то история в Хранилище 1С будет новая для нового объекта.
Так же, в выгрузке конфигурации 1С в xml присутствует множество файлов, очень похожих по контенту и именам (например ФормаСписка.xml), отличающихся только внутренним идентификатором (UUID).
Поэтому, если в одной версии хранилища были удалены одни объекты (файлы), добавлены и/или переименованы другие - в Git нужно явно сообщить, что удалять, несмотря на похожие файлы в других каталогах, а так же то, какие файлы переименовываются. Таким образом, одна версия хранилища 1С может превращаться в 3 коммита: удаление файлов, переименование, и все остальные изменения контента в файлах и добавления файлов.
Чтобы обеспечить корректное переименование истории объектов метаданных при переименовании/удалении их в хранилище конфигураций 1С:Предприятия создается файл индекса DumpFilesIndex.txt
идентификаторов и файлов для каждой версии. На основе этого файла строится командный файл для выполнения коммита в Git git_command_1.bat
-
Дополнительные возможности