Синхронизация хранилища 1С с репозиторием git
Clone or download
khorevaa Merge pull request #145 from AlexStrizh/patch-2
Баг при использовании параметра all
Latest commit 3282d15 Aug 22, 2018

readme.md

Синхронизация хранилища 1С с репозиторием git

Обсудить Join the chat at https://gitter.im/EvilBeaver/oscript-library

GitHub release

Введение

Проект является глубоким рефакторингом утилиты v83unpack (https://github.com/xDrivenDevelopment/v83unpack).

Изначально данный механизм представляет собой внешнюю обработку 1С:Предприятия, которая впоследствии была портирована на OneScript. Исходные коды порта доступны в том же репозитории v83unpack.

Приложение gitsync представляет собой отдельное (standalone) приложение на 1Script, и предназначено для синхронизации хранилища конфигураций 1С с репозитарием git.

Установка

Вручную

  1. Вручную - Скопировать каталог gitsync/src на жесткий диск
  2. Запустить приложение командой oscript.exe <каталог gitsync>\src\gitsync.os

Через пакетный менеджер opm

  1. командой opm install gitsync
  2. Запустить командой gitsync

Использование

Возможны следующие сценарии использования/организации хранения исходников в репозитариях Git:

  1. в одном репозитарии Git хранятся как исходники конфигурации 1С, так и прочие исходники/файлы продукта (например, документация, тесты и прочее) - рекомендуется
  • Используем этапы:
    • Клонировать средствами Git исходный репозитарий (git clone) или создать новый (git init)
    • Выполнение настройки для начала выгрузки
    • Синхронизация или Экспорт исходников конфигурации в сторонний репозитарий Git
    • далее штатные инструменты Git - commit/pull/push
  1. в одном репозитарии хранятся только исходники конфигурации 1С - не рекомендуется
  • Используем этапы: + Подготовка нового репозитария - если репозитария Гит еще нет + Клонирование существующего пустого репо - если уже был создан пустой репозитарий Git + Выполнение настройки для начала выгрузки + Синхронизация

Экспорт исходников конфигурации в сторонний репозитарий Git

Основной режим работы для сценария в одном репозитарии Git хранятся как исходники конфигурации 1С, так и прочие исходники/файлы продукта (например, документация, тесты и прочее).

  • Клонировать средствами Git исходный репозитарий (git clone) или создать новый (git init)
  • Перейти в каталог репозитария Git
  • Запустить gitsync с параметрами gitsync export <каталог или файл хранилища> <КаталогИсходниковВнутриЛокальнойКопииGit> [-email домен почты пользователей]

Будет инициализирован новый репо и созданы необходимые файлы для синхронизации.

Примеры использования:

  • gitsync export "W:\Хранилище1С" src\config - помещение исходников конфигурации в каталог src\config репозитория Git в текущем каталоге
  • gitsync export "W:\Хранилище1С\1cv8ddb.1cd" src - помещение исходников конфигурации в каталог src репозитория Git в текущем каталоге

Подготовка нового репозитария

Запустить gitsync с параметрами gitsync init <каталог или файл хранилища> <локальный каталог git> [-email домен почты пользователей]

Буден инициализирован новый репо и созданы необходимые файлы для синхронизации.

Примеры использования:

  • gitsync init "W:\Хранилище1С" .
  • gitsync init "W:\Хранилище1С\1cv8ddb.1cd" W:\GitRepo

Клонирование существующего пустого репо

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

Запустить gitsync с параметрами gitsync clone <каталог или файл хранилища> <url-git> [локальный каталог git] [-email домен почты пользователей]

Буден клонирован удаленный репо и созданы необходимые файлы для синхронизации, если их там еще нет.

Примеры использования:

  • gitsync clone "W:\Хранилище1С\1cv8ddb.1cd" W:\GitRepo - помещение исходников конфигурации в корень репозитория Git

  • gitsync clone "W:\Хранилище1С" . - помещение исходников конфигурации в корень репозитория Git в текущем каталоге

Выполнение настройки для начала выгрузки

Файлы настройки

Для настройки выгрузки используются 2 файла:

  • VERSION - содержит номер текущей выгруженной версии хранилища 1С
  • AUTHORS - содержит информацию о связке пользователей хранилища 1С и пользователей репозитария Git

Указанные файлы должны находиться в корне каталога выгрузки исходников, который может не совпадать с корнем репозитария Git в зависимости от выбранного сценария организации хранения исходников.

Файл VERSION имеет формат xml-файла

Пример файла, в котором указано, что выгружено 10 версий:

<?xml version="1.0" encoding="UTF-8"?>
<VERSION>10</VERSION>

Файл AUTHORS имеет формат ini-файла

Администратор=Пользователь1 <admin-user@mail.com>
Вася Иванов=Другой Пользователь <user-user@mail.com>

слева указано имя пользователя хранилища 1С

справа - представление имени пользователя репозитария Git и его e-mail

С помощью e-mail выполняется связка пользователя с публичными репозитариями (например, Github или Bitbucket)

Шаги настройки

  • В файле VERSION указать версию, после которой будет выполняться выгрузка в Git

    • команда gitsync set-version КаталогФайлаВерсии НомерВерсии
    • Для выгрузки всего хранилища 1С нужно указать число 0 вместо НомерВерсии
    • для выгрузки с 50 версии нужно указать число 49 вместо НомерВерсии
  • В файле AUTHORS прописать сопоставление пользователей хранилища 1С и пользователей Git

Синхронизация

Основной режим работы для сценария Хранение исходников конфигурации 1С в отдельном репозитарии Git. Аргументы командной строки для запуска:

  • <каталог или файл хранилища>
  • <адрес (url) репозитария>
  • [Каталог исходников внутри локальной копии git-репозитария]
  • [-email домен почты пользователей]
  • [-v8version маска версии 1С] - маска версии в стиле стартера (8.3 или 8.3.5 или 8.2.19.109)

Пример:

cd local-git-repo
gitsync c:\storage\zup http://github.com/myAccount/zup.git src\config -v8version 8.3.6

или cd local-git-repo gitsync c:\storage\zup http://github.com/myAccount/zup.git -v8version 8.3.6

Получение справки

Справку по синтаксису команды можно получить, запустив gitsync help <команда>. Например:

gitsync help clone
gitsync help init

Команды

Синхронизация хранилища конфигураций 1С с репозитарием GIT.
Использование:
	gitsync <storage-path> <git-url> [local-dir] [ключи]
	gitsync <команда> <параметры команды> [ключи]
Параметры:
 <ПутьКХранилищу> - Файловый путь к каталогу хранилища конфигурации 1С.
 <URLРепозитория> - Адрес удаленного репозитория GIT.
 <ЛокальныйКаталогГит> - Каталог исходников внутри локальной копии git.
 -email - <домен почты для пользователей git>
 -v8version - Маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)
 -debug - <on|off>
 -verbose - <on|off>
 -branch - <имя ветки git>
 -format - <hierarchical|plain>
 -minversion - Число, номер минимальной версии для выгрузки
 -maxversion - Число, номер максимальной версии для выгрузки
 -limit - Число, выгрузить неболее limit версий от текущей выгруженной
 -increment - Булево, признак использования выгрузки только изменений, действует с платформы 8.3.10

Возможные команды:
 clone        - Клонирует существующий репозиторий и создает служебные файлы
 init         - Создает новый репозиторий и создает служебные файлы
 all          - Запускает синхронизацию по нескольким репозиториям
 set-version  - Устанавливает необходимую версию в файл VERSION
 help         - Вывести справку по параметрам команды
 export       - Выполнить локальную синхронизацию, без pull/push

Синхронизация по нескольким хранилищам

Зачастую удобно настроить регламентную (по расписанию) синхронизацию сразу по нескольким хранилищам 1С. Для этого необходимо подготовить конфигурационный файл с параметрами синхронизации (пример файла xml пример файла json)

Далее необходимо запустить gitsync с командой all

gitsync all <путь к файлу конфигурации (xml или json)>

Подробнее о параметрах команды all можно прочитать, запустив gitsync help all

Примеры использования min/max version и limit

Выгрузить все версии начиная с 5

gitsync export store -minversion 5

Выгрузить версии с 5 по 10

gitsync export store -minversion 5 -maxversion 10

Выгрузить не более 2 версий от последней выгруженной. Последняя выгруженная 4, выгружаем 2 следующие: 5 и 6.

gitsync export store -limit 2

Выгрузить 2 версии от последней выгруженной, но не более 5-ой версии. Удобно когда выгрузка идет небольшими партиями, при заранее известном максимальном номере версии.

gitsync export store -maxversion 5 -limit 2

Решение проблемы вызванной ошибкой "Не обнаружено свободной лицензии!"

В случае возникновения ошибки "Не обнаружено свободной лицензии!" рекомендуется воспользоваться параметром -amount-look-for-license. Данный параметр может быть использован со следующими командами export и sync. При возникновении данной ошибки повторное получение лицензии происходит через 10 сек. По умолчанию данный параметр равен 1.

Выполнить 5 попыток получения лицензии:

gitsync export -amount-look-for-license 5

Выполнять получение лицензии без ограничения:

gitsync export -amount-look-for-license 0

Примеры инкрементальной выгрузки изменений

Действует при использовании платформы 8.3.10

Необходимо добавить в .gitignore строку со значением ConfigDumpInfo.xml. Если такого файла нет в корне git-репозитария, необходимо создать его вручную, добавить строку ConfigDumpInfo.xml и закоммитить. Пример использования:

 gitsync export store -limit 10  -increment -v8version 8.3.10
  1. При выгрузке с ключем -increment проверяется наличие файла ConfigDumpInfo.xml в целевой папке и если его нет, тогда делается полная выгрузка.

  2. Выгрузка происходит не через временные каталоги, а сразу в целевой каталог.

  3. При подобной выгрузке ранее удаленные и переменованные файлы не выгружаются, соответственно, периодически необходимо делать выгрузку без использования ConfigDumpInfo.xml.

    • Для jenkins можно в течении дня выгружать инкрементальной выгрузкой,
    • Ночью включить в дополнительных параметрах git параметр Clean before checkout, тогда файл ConfigDumpInfo.xml будет удален и будет выполнена полная выгрузка.