Skip to content

Как это работает

Dmitriy Marmyshev edited this page Oct 18, 2018 · 3 revisions

Конфигурация 1С:ГитКонвертер разработана для того, чтобы:

  • выполнить первоначальную конвертацию хранилища конфигурации в репозиторий Git,
  • автоматически, по расписанию, обновлять ветку (например master) удалённого репозитория актуальным состоянием конфигурации из основного хранилища.

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

Компьютер, на котором установлена серверная информационная база с конфигурацией 1С:ГитКонвертер, будем называть сервер 1С:ГитКонвертера. 1С:ГитКонвертер получает данные из хранилища конфигурации, преобразует их в формат EDT, и фиксирует их в локальном репозитории, который находится на сервере 1С:ГитКонвертера. Затем он отправляет эти изменения в удалённый репозиторий Git, который находится на некотором компьютере, который назовём Git-сервер. Этот удалённый репозиторий и есть "хранилище проекта" для команды разработчиков (разработчик 1 и разработчик 2).

1С:ГитКонвертер одну за другой, по очереди, читает версии конфигурации из хранилища и преобразует их. Процесс преобразования одной версии состоит из следующих этапов:

  1. Используя интерфейс командной строки 1С:Предприятия 8 в каталоге выгрузки версий создаётся информационная база, в которую из хранилища получается очередная версия.
  2. Из информационной базы эта версия выгружается в XML файлы.
  3. Используя интерфейс командной строки EDT, XML выгрузка конфигурации преобразуется в фалы внутреннего формата EDT.
  4. Файлы внутреннего формата EDT помещаются в рабочий каталог проекта, который находится в локальном каталоге Git.
  5. Командами Git'а выполняется фиксация изменений в локальном репозитории и отправка их в удалённый репозиторий.

Из этой схемы важно понять, что когда вы будете настраивать конвертацию хранилища в 1С:ГитКонвертере вам нужно будет указать два каталога:

  • Каталог выгрузки версий,
  • Локальный каталог Git.

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

Также из этой схемы вы можете понять, что на сервере 1С:ГитКонвертера вам понадобится установить следующее программное обеспечение (подробнее об этом рассказывается в разделе Установка программного обеспечения на сервер 1С:ГитКонвертера):

  • Сервер и клиент 1С:Предприятия 8 для работы конфигурации 1С:ГитКонвертер,
  • Клиенты 1С:Предприятия 8 тех версий, на которых работают хранилища конфигураций, которые вы собираетесь конвертировать,
  • СУБД, поддерживаемую 1С:Предприятием 8, для хранения информационной базы 1С:ГитКонвертера,
  • EDT для преобразования XML файлов выгрузки конфигурации в формат EDT,
  • Git для фиксации изменений в локальном репозитории и отправки их в удалённый репозиторий.

Конфигурация 1С:ГитКонвертер обладает возможностями, которые вы можете использовать опционально, по желанию. Это такие возможности как:

  • Использование Git LFS - для хранения больших бинарных файлов вне репозитория; использование этой возможности позволяет ускорить операции с репозиторием.
  • Очереди выполнения - для балансировки нагрузки, создаваемой фоновыми заданиями, путём ограничения количества операций, выполняемых в каждой очереди.
  • Копии хранилища - для параллельной загрузки версий одного хранилища конфигурации.

Перед выполнением дальнейших шагов желательно сначала ознакомиться с этими возможностями, потому что, например, решение об использовании Git LFS необходимо принять до начала работы с 1С:ГитКонвертером, основываясь на размере вашего хранилища конфигурации, количестве версий в нём и наличии конфигураций поставщиков. Другие возможности вы сможете задействовать и потом, уже в процессе работы.

Коммит в Git

Для того, чтобы создать правильную историю изменений объектов в Git репозитории аналогичную Хранилищу 1С необходимо учитывать особенности двух систем:

  • Хранилище конфигураций 1С:Предприятия сохраняет изменения по объектам, идентификатором которого является внутренний UUID, недоступный для редактирования в Конфигураторе.
  • Репозиторий Git отслеживает изменения контента файлов при их перемещении.

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

Так же, в выгрузке конфигурации 1С в xml присутствует множество файлов, очень похожих по контенту и именам (например ФормаСписка.xml), отличающихся только внутренним идентификатором (UUID).

Поэтому, если в одной версии хранилища были удалены одни объекты (файлы), добавлены и/или переименованы другие - в Git нужно явно сообщить, что удалять, несмотря на похожие файлы в других каталогах, а так же то, какие файлы переименовываются. Таким образом, одна версия хранилища 1С может превращаться в 3 коммита: удаление файлов, переименование, и все остальные изменения контента в файлах и добавления файлов.

Чтобы обеспечить корректное переименование истории объектов метаданных при переименовании/удалении их в хранилище конфигураций 1С:Предприятия создается файл индекса DumpFilesIndex.txt идентификаторов и файлов для каждой версии. На основе этого файла строится командный файл для выполнения коммита в Git git_command_1.bat

Clone this wiki locally