Синхронизация хранилища 1С с репозиторием git
Введение
Проект является глубоким рефакторингом утилиты v83unpack (https://github.com/xDrivenDevelopment/v83unpack).
Изначально данный механизм представляет собой внешнюю обработку 1С:Предприятия, которая впоследствии была портирована на OneScript. Исходные коды порта доступны в том же репозитории v83unpack.
Приложение gitsync представляет собой отдельное (standalone) приложение на 1Script, и предназначено для синхронизации хранилища конфигураций 1С с репозитарием git.
Установка
Вручную
- Вручную - Скопировать каталог gitsync/src на жесткий диск
- Запустить приложение командой
oscript.exe <каталог gitsync>\src\gitsync.os
Через пакетный менеджер opm
- командой
opm install gitsync
- Запустить командой
gitsync
Использование
Возможны следующие сценарии использования/организации хранения исходников в репозитариях Git:
- в одном репозитарии Git хранятся как исходники конфигурации 1С, так и прочие исходники/файлы продукта (например, документация, тесты и прочее) -
рекомендуется
- Используем этапы:
- Клонировать средствами Git исходный репозитарий (
git clone
) или создать новый (git init
) Выполнение настройки для начала выгрузки
Синхронизация
илиЭкспорт исходников конфигурации в сторонний репозитарий Git
- далее штатные инструменты Git -
commit/pull/push
- Клонировать средствами Git исходный репозитарий (
- в одном репозитарии хранятся только исходники конфигурации 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 версий от текущей выгруженной
Возможные команды:
clone - Клонирует существующий репозиторий и создает служебные файлы
init - Создает новый репозиторий и создает служебные файлы
all - Запускает синхронизацию по нескольким репозиториям
set-version - Устанавливает необходимую версию в файл VERSION
help - Вывести справку по параметрам команды
export - Выполнить локальную синхронизацию, без pull/push
Синхронизация по нескольким хранилищам
Зачастую удобно настроить регламентную (по расписанию) синхронизацию сразу по нескольким хранилищам 1С. Для этого необходимо подготовить конфигурационный файл с параметрами синхронизации (пример файла)
Далее необходимо запустить gitsync с командой all
gitsync all <путь к xml-файлу конфигурации>
Подробнее о параметрах команды 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