Плагины gitsync расширяют возможности синхронизации конфигураций 1С с git-репозиторием. Каждый плагин решает свою задачу: проверка авторов, установка тегов, выгрузка в формате EDT и т.д.
Плагинами управляют через утилиту gitsync:
gitsync p e <имя_плагина> — включить плагин
gitsync p d <имя_плагина> — отключить плагин
gitsync p d -a — отключить все плагины
gitsync p l — список включённых плагинов
gitsync p l -a — список всех доступных плагинов (включая отключённые)
gitsync p i -f <файл.ospx> — установить плагин из пакета
Важно: gitsync p l без ключа -a показывает только включённые плагины. Чтобы увидеть полный перечень, используйте gitsync p l -a.
Большинство параметров плагинов можно задать двумя способами: через аргумент командной строки gitsync и через переменную окружения.
Назначение: блокирует синхронизацию, если автор версии хранилища отсутствует в файле AUTHORS.
Команды: sync
Параметры: нет.
Принцип работы: перед началом цикла обработки версий проверяет таблицу истории хранилища — каждый автор версии должен быть сопоставлен git-пользователю в файле AUTHORS. Несопоставленные авторы вызывают исключение с указанием количества проблемных версий.
Назначение: проверка заполнения и содержимого комментариев к версиям хранилища.
Команды: sync
Поведение без --error-comment: при обнаружении проблем (пустой комментарий, нехватка упоминаний задач) в лог пишется КРИТИЧНАЯОШИБКА, но синхронизация продолжается. Код возврата — 0. Это позволяет вести мониторинг без прерывания процесса.
С --error-comment: при любой из проверок синхронизация останавливается с исключением и кодом возврата 1.
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--error-comment |
-C |
false |
— | Вызывать ошибку при отсутствии комментария |
--task-prefix |
— | "" |
GITSYNC_TASK_PREFIX |
Префикс задачи для поиска в комментарии |
--task-pattern |
— | "" |
GITSYNC_TASK_PATTERN |
Паттерн задачи (регулярное выражение) |
--min-task-count |
— | 0 |
— | Минимальное количество упоминаний задач |
--max-task-count |
— | 0 |
— | Максимальное количество упоминаний задач |
--author-presentation |
— | false |
GITSYNC_AUTHOR_PRESENTATION |
Использовать представление автора в сообщениях |
--repair-quotes |
— | false |
GITSYNC_REPAIR_QUOTES |
Заменять Unicode-кавычки на ASCII |
# Требовать комментарий (с ошибкой)
gitsync sync --error-comment /path/to/storage /path/to/src
# Проверить наличие префикса задачи "RM-12345" в комментарии
gitsync sync --task-prefix RM
# Заменить кавычки-ёлочки на прямые
gitsync sync --repair-quotes /path/to/storage /path/to/src
Назначение: снимает конфигурацию с поддержки перед выгрузкой в исходники — через API конфигуратора (СнятьКонфигурациюСПоддержки).
Команды: все (подключается неявно)
Параметры: нет.
Зачем снимать поддержку: конфигурация на поддержке поставщика содержит в выгрузке большой бинарный .cf-файл с полной конфигурацией вендора. Снятие поддержки исключает его из исходников, что:
- В разы сокращает размер git-репозитория
- Делает diff читаемым (нет изменений от обновлений поставщика)
- Разблокирует объекты конфигурации для редактирования
Снятие поддержки выполняется перед каждой выгрузкой версии — конфигурация в хранилище остаётся на поддержке, меняется только выгруженное состояние.
Назначение: отключает версионирование ConfigDumpInfo.xml и удаляет его после выгрузки.
Команды: init, sync
Параметры: нет.
Принцип работы:
- При активизации отключает несовместимый плагин
increment - Удаляет
ConfigDumpInfo.xmlиз каталога рабочей копии и каталога выгрузки - Добавляет
ConfigDumpInfo.xmlв.gitignore - Коммитит изменение
.gitignore
Назначение: удаляет информацию о поддержке из выгруженных исходников — напрямую, без использования конфигуратора. Решает ту же задачу, что и disable-support, но работает с папкой Ext/ParentConfigurations/.
Команды: sync
Параметры: нет.
Отличие от disable-support: disable-support требует отдельное действие в конфигураторе — вызов СнятьКонфигурациюСПоддержки. drop-support делает то же самое прямыми файловыми операциями — удаляет *.cf из Ext/ParentConfigurations/ и затирает ParentConfigurations.bin.
Принцип работы:
- Удаляет
*.cfизExt/ParentConfigurations/ - Записывает в
ParentConfigurations.binпустую информацию о поддержке - Добавляет
Ext/ParentConfigurations/*.cfв.gitignore - Коммитит изменение
.gitignore
Назначение: выгрузка конфигурации в формате EDT (1C:Enterprise Development Tools).
Требования: установленные EDT и утилита ring или 1cedtcli.
Команды: sync
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--project-name |
-PN |
"" |
GITSYNC_PROJECT_NAME |
Имя проекта в EDT |
--workspace-location |
-W |
"" |
GITSYNC_WORKSPACE_LOCATION |
Путь к рабочей области EDT |
--base-project-name |
-BP |
"" |
GITSYNC_BASE_PROJECT_NAME |
Базовый проект (для расширений) |
--edt-version |
-EDT |
"" |
GITSYNC_EDT_VERSION |
Версия EDT. Если не задана — автоопределение |
# Выгрузка конфигурации в формате EDT
gitsync sync --project-name MyConfig --workspace-location /path/to/workspace /path/to/storage /path/to/src
# Для расширения с указанием базового проекта
gitsync sync --project-name MyExt --workspace-location /path/to/ws --base-project-name BaseConfig /path/to/storage /path/to/src
# С указанием версии EDT
gitsync sync --project-name MyConfig --workspace-location /path/to/ws --edt-version 2024.2.5 /path/to/storage /path/to/src
Назначение: инкрементальная выгрузка конфигурации в исходники. Выгружаются только изменённые объекты.
Команды: все (подключается неявно)
Параметры: нет.
Принцип работы:
- Проверяет наличие
ConfigDumpInfo.xmlв рабочей копии - Через
DumpConfigToFiles -getChangesопределяет возможность инкрементальной выгрузки - При выгрузке использует флаг
-updateи дамп измененийConfigDumpInfo.xml - Сохраняет список изменённых файлов в
dumplist.txtдля использования другими плагинами
Несовместимость с другими плагинами:
drop-config-dump— удаляетConfigDumpInfo.xml, который необходимincrementдля отслеживания изменений. При включенииdrop-config-dumpавтоматически отключаетincrement.use-ibcmd— предоставляет собственную реализацию инкрементальной выгрузки (через флаг--increment). При включенииuse-ibcmdавтоматически отключаетincrementи включает свой параметр--increment.
Не рекомендуется включать increment одновременно с этими плагинами.
Назначение: ограничение номеров выгружаемых версий хранилища.
Команды: sync
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--limit |
-l |
0 |
GITSYNC_LIMIT |
Не более N версий от текущей |
--minversion |
— | 0 |
— | Минимальный номер версии |
--maxversion |
— | 0 |
— | Максимальный номер версии |
# Выгрузить не более 3 версий
gitsync sync --limit 3 /path/to/storage /path/to/src
# Выгрузить версии с 5 по 10
gitsync sync --minversion 5 --maxversion 10 /path/to/storage /path/to/src
Назначение: замена автора коммита через специальный маркер в комментарии к версии хранилища.
Команды: все (подключается неявно)
Параметры: нет.
Принцип работы: при синхронизации ищет в комментариях версий строку --GitSyncAuthor НовыйАвтор. Если находит — заменяет автора коммита на указанного. Новый автор должен быть в файле AUTHORS. Строка с командой замены удаляется из комментария.
В хранилище версия от пользователя «Администратор» с комментарием:
Исправление ошибки №12345
--GitSyncAuthor Иванов
В git коммит будет создан от имени «Иванов» с комментарием:
Исправление ошибки №12345
Назначение: (Windows) заменяет штатный механизм копирования исходников на robocopy для обхода ограничения на длину пути.
Команды: sync
Параметры: нет.
Принцип работы: при очистке и перемещении файлов в каталог рабочей копии использует robocopy вместо стандартных файловых операций. Это позволяет работать с путями длиннее 260 символов.
Назначение: автоматическая расстановка тегов git при изменении версии конфигурации.
Команды: sync, export
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--skip-exists-tags |
-S |
false |
GITSYNC_SKIP_EXISTS_TAGS |
Пропускать ошибку, если тег уже существует |
--numerator |
-N |
false |
GITSYNC_NUMERATOR |
Добавлять тег v.X по номеру версии хранилища |
--tags-prefix |
-T |
"" |
GITSYNC_TAGS_PREFIX |
Префикс для всех создаваемых тегов |
# Тег по версии конфигурации с префиксом
gitsync sync --tags-prefix vendor/ /path/to/storage /path/to/src
# Результат: тег vendor/1.3.220.1
# Тег-нумератор версий хранилища
gitsync sync --numerator /path/to/storage /path/to/src
# Результат: теги v.1, v.2, ...
# Комбинация префикса и нумератора
gitsync sync --numerator --tags-prefix release/ /path/to/storage /path/to/src
# Результат: тег release/1.3.220.1 и release/v.1, release/v.2, ...
Назначение: синхронизация с удалённым git-репозиторием (pull/push).
Команды: sync
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--push |
-PS |
false |
GITSYNC_REMOTE_PUSH |
Отправлять изменения на удалённый репозиторий |
--pull |
-G |
false |
GITSYNC_REMOTE_PULL |
Получать изменения перед синхронизацией |
--branch |
-b |
"master" |
GITSYNC_REMOTE_BRANCH |
Имя ветки |
--push-tags |
-T |
false |
GITSYNC_REMOTE_PUSH_TAGS |
Отправлять теги |
--push-n-commits |
-n |
0 |
GITSYNC_REMOTE_PUSH_N_COMMITS |
Промежуточный push через N коммитов |
--push-options |
-O |
"" |
GITSYNC_PUSH_OPTIONS |
Дополнительные параметры push (через ;) |
аргумент URL |
— | — | GITSYNC_REPO_URL |
URL удалённого репозитория |
# Получить изменения и отправить после синхронизации
gitsync sync --pull --push /path/to/storage /path/to/src https://github.com/user/repo.git
# С указанием ветки и отправкой тегов
gitsync sync --push --branch develop --push-tags /path/to/storage /path/to/src https://github.com/user/repo.git
# Промежуточный push каждые 10 коммитов
gitsync sync --push --push-n-commits 10 /path/to/storage /path/to/src https://github.com/user/repo.git
Назначение: выгрузка конфигурации через утилиту tool1CD вместо штатных механизмов 1С.
Ограничения: не работает с серверными хранилищами (TCP: и HTTP). Неприменим для расширений.
Команды: sync, clone, init
Параметры: нет.
Принцип работы: читает таблицы версий (VERSIONS) и пользователей (USERS) напрямую из файловой базы хранилища (1cv8ddb.1CD), минуя конфигуратор 1С.
Назначение: распаковка обычных форм 1С в исходные файлы.
Команды: sync
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--rename-module |
-R |
false |
GITSYNC_RENAME_MODULE |
Переименовать module → Module.bsl |
--rename-form |
-F |
false |
GITSYNC_RENAME_FORM |
Переименовать form → form.txt |
# Распаковать формы с переименованием модулей
gitsync sync --rename-module /path/to/storage /path/to/src
Назначение: выгрузка конфигурации через утилиту ibcmd (автономный сервер 1С).
Примечание: при активизации отключает плагин increment, перенимая его функцию инкрементальной выгрузки.
Команды: sync
| Параметр | Кратко | По умолчанию | Переменная окружения | Описание |
|---|---|---|---|---|
--ibcmd-data |
— | "" |
GITSYNC_IBCMD_DATA |
Рабочий каталог ibcmd |
--ibcmd-dbms |
-t |
"MSSQLServer" |
GITSYNC_IBCMD_DBMS |
Тип СУБД |
--ibcmd-db-server |
-s |
"" |
GITSYNC_IBCMD_DB_SERVER |
Адрес сервера БД |
--ibcmd-db-name |
-n |
"" |
GITSYNC_IBCMD_DB_NAME |
Имя БД |
--ibcmd-db-user |
-U |
"" |
GITSYNC_IBCMD_DB_USER |
Пользователь БД |
--ibcmd-db-pwd |
-P |
"" |
GITSYNC_IBCMD_DB_PWD |
Пароль пользователя БД |
--ibcmd-threads |
-j |
0 |
GITSYNC_IBCMD_THREADS |
Количество потоков |
--increment |
-i |
false |
GITSYNC_IBCMD_INCREMENT |
Инкрементальная выгрузка |
# Выгрузка из файловой БД
gitsync sync --ibcmd-data /path/to/data /path/to/storage /path/to/src
# Выгрузка из серверной БД с 4 потоками
gitsync sync --ibcmd-db-server myserver --ibcmd-db-name mydb --ibcmd-db-user admin --ibcmd-db-pwd secret --ibcmd-threads 4 /path/to/storage /path/to/src
| Переменная | Плагин | Параметр |
|---|---|---|
GITSYNC_SKIP_EXISTS_TAGS |
smart-tags | --skip-exists-tags |
GITSYNC_NUMERATOR |
smart-tags | --numerator |
GITSYNC_TAGS_PREFIX |
smart-tags | --tags-prefix |
GITSYNC_TASK_PREFIX |
check-comments | --task-prefix |
GITSYNC_TASK_PATTERN |
check-comments | --task-pattern |
GITSYNC_AUTHOR_PRESENTATION |
check-comments | --author-presentation |
GITSYNC_REPAIR_QUOTES |
check-comments | --repair-quotes |
GITSYNC_LIMIT |
limit | --limit |
GITSYNC_PROJECT_NAME |
edtExport | --project-name |
GITSYNC_WORKSPACE_LOCATION |
edtExport | --workspace-location |
GITSYNC_BASE_PROJECT_NAME |
edtExport | --base-project-name |
GITSYNC_EDT_VERSION |
edtExport | --edt-version |
GITSYNC_REMOTE_PUSH |
sync-remote | --push |
GITSYNC_REMOTE_PULL |
sync-remote | --pull |
GITSYNC_REMOTE_BRANCH |
sync-remote | --branch |
GITSYNC_REMOTE_PUSH_TAGS |
sync-remote | --push-tags |
GITSYNC_REMOTE_PUSH_N_COMMITS |
sync-remote | --push-n-commits |
GITSYNC_PUSH_OPTIONS |
sync-remote | --push-options |
GITSYNC_REPO_URL |
sync-remote | аргумент URL |
GITSYNC_RENAME_MODULE |
unpackForm | --rename-module |
GITSYNC_RENAME_FORM |
unpackForm | --rename-form |
GITSYNC_IBCMD_DATA |
use-ibcmd | --ibcmd-data |
GITSYNC_IBCMD_DBMS |
use-ibcmd | --ibcmd-dbms |
GITSYNC_IBCMD_DB_SERVER |
use-ibcmd | --ibcmd-db-server |
GITSYNC_IBCMD_DB_NAME |
use-ibcmd | --ibcmd-db-name |
GITSYNC_IBCMD_DB_USER |
use-ibcmd | --ibcmd-db-user |
GITSYNC_IBCMD_DB_PWD |
use-ibcmd | --ibcmd-db-pwd |
GITSYNC_IBCMD_THREADS |
use-ibcmd | --ibcmd-threads |
GITSYNC_IBCMD_INCREMENT |
use-ibcmd | --increment |