Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,17 @@
1. `limit` - добавляет возможность ограничения на минимальный, максимальный номер версии хранилища, а так же на лимит на количество выгружаемых версий за один запуск
1. `replace-authors` - добавляет возможность замены автора коммита
1. `robo-copy` - заменяет механизм переноса исходников из временного каталога в рабочий на robocopy, чтобы избежать ошибок с длиной пути к файлу
1. `smart-tags` - при смене версии конфигурации (не путать с версией хранилища) устанавливает тег, равный версии конфигурации. Добавляет опции команды `sync` для автоматической установки метки git (команда `git tag`) равной версии хранилища (в формате "v.номер").
1. `smart-tags` - при смене версии конфигурации (не путать с версией хранилища) устанавливает тег, равный версии конфигурации. Добавляет опции команды `sync` для автоматической установки метки git (команда `git tag`) равной версии хранилища (в формате "v.номер"). Параметр `--tags-prefix` задает префикс для всех создаваемых тегов.
1. `sync-remote` - добавляет функциональность синхронизации с удаленным репозиторием git (команды `git pull` и `git push`)
1. `tool1CD` - заменяет использование штатных механизмов 1С на приложение `tool1CD` при выгрузке конфигурации в исходники
1. `unpackForm` - выполняет распаковку обычных форм на исходники. Добавляет опции команды `sync` для переименования объектов обычных форм.
1. `use-ibcmd` - включает использование утилиты управления автономным сервером `ibcmd` для выгрузки конфигурации/расширения в файлы

## Документация

- [Пользовательская документация](./docs/user-guide.md) — описание каждого плагина и его параметров
- [Техническая документация](./docs/technical.md) — архитектура, хуки, добавление плагинов

## Доработка

Доработка проводится по github-flow. Жду ваших PR.
Expand Down
285 changes: 285 additions & 0 deletions docs/technical.md

Large diffs are not rendered by default.

410 changes: 410 additions & 0 deletions docs/user-guide.md

Large diffs are not rendered by default.

35 changes: 34 additions & 1 deletion features/smart-tags.feature
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,37 @@
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0
И Тег "1.1.0.1" должен присутствовать в репозитории
И Тег "1.1.0.1" должен присутствовать в репозитории

Сценарий: Cинхронизация c префиксом тегов
Допустим Я добавляю параметр "--tags-prefix vendor/" для команды "gitsync"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
И Я записываю "9" в файл VERSION
Когда Я выполняю команду "gitsync"
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0
И Тег "vendor/1.1.0.1" должен присутствовать в репозитории

Сценарий: Cинхронизация c префиксом тегов через переменную окружения
Допустим Я устанавливаю переменную окружения "GITSYNC_TAGS_PREFIX" равной "vendor/"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
И Я записываю "9" в файл VERSION
Когда Я выполняю команду "gitsync"
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0
И Тег "vendor/1.1.0.1" должен присутствовать в репозитории

Сценарий: Cинхронизация с нумератором через переменную окружения
Допустим Я устанавливаю переменную окружения "GITSYNC_NUMERATOR" равной "true"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
И Я записываю "9" в файл VERSION
Когда Я выполняю команду "gitsync"
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0
И Тег "v.10" должен присутствовать в репозитории
8 changes: 8 additions & 0 deletions features/step_definitions/smart-tags.os
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ТегДолженПрисутствоватьВРепозитории");
ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкружения");

Возврат ВсеШаги;
КонецФункции
Expand Down Expand Up @@ -45,3 +46,10 @@
Ожидаем.Что(Вывод).Содержит(ОжидаемыйВыводКоманды);

КонецПроцедуры

//Я устанавливаю переменную окружения "GITSYNC_TAGS_PREFIX" равной "vendor/"
Процедура ЯУстанавливаюПеременнуюОкружения(Знач ИмяПеременной, Знач Значение) Экспорт

УстановитьПеременнуюСреды(ИмяПеременной, Значение);

КонецПроцедуры
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
КонецПроцедуры

Описание.Имя("gitsync-plugins")
.Версия("2.0.3")
.Версия("2.1.0")
.Автор("Khorev A.A. and SilverBulleters")
.АдресАвтора("khorevaa@gmail.com,help@silverbulleters.org")
.Описание("Набор предустановленных плагинов для gitsync")
Expand Down
30 changes: 23 additions & 7 deletions src/Классы/smartTags.os
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

Перем НумероватьВерсии;
Перем ТекущаяВерсияХранилища1С;
Перем ПрефиксТегов;

#Область Интерфейс_плагина

Expand Down Expand Up @@ -36,7 +37,7 @@
// Строка - описание функциональности плагина
//
Функция Описание() Экспорт
Возврат "Плагин добавляет функциональность автоматической расстановки меток в git";
Возврат "Плагин добавляет функциональность автоматической расстановки меток в git. Поддерживает префикс тегов через --tags-prefix";
КонецФункции

// Возвращает подробную справку к плагину
Expand All @@ -45,7 +46,11 @@
// Строка - подробная справка для плагина
//
Функция Справка() Экспорт
Возврат "Справка плагина";
Возврат "Плагин при изменении версии конфигурации автоматически создает тег git.
|Параметры:
| --skip-exists-tags - пропуск ошибок создания уже существующих тегов (env: GITSYNC_SKIP_EXISTS_TAGS)
| --numerator - добавляет тег вида v.X по номеру версии хранилища 1С (env: GITSYNC_NUMERATOR)
| --tags-prefix - префикс, добавляемый к каждому автоматически создаваемому тегу, например vendor/ (env: GITSYNC_TAGS_PREFIX)";
КонецФункции

// Возвращает имя плагина
Expand Down Expand Up @@ -92,7 +97,11 @@
.ВОкружении("GITSYNC_SKIP_EXISTS_TAGS");

КлассРеализации.Опция("N numerator", Ложь, "[*smart-tags] флаг добавляет номер хранилища 1С как тег вида v.X")
.Флаговый();
.Флаговый()
.ВОкружении("GITSYNC_NUMERATOR");

КлассРеализации.Опция("T tags-prefix", "", "[*smart-tags] префикс автоматически создаваемых тегов, например vendor/")
.ВОкружении("GITSYNC_TAGS_PREFIX");

КонецПроцедуры

Expand All @@ -102,6 +111,8 @@

НумероватьВерсии = ПараметрыКоманды.Параметр("numerator", Ложь);

ПрефиксТегов = ПараметрыКоманды.Параметр("tags-prefix", "");

КонецПроцедуры

Процедура ПередНачаломВыполнения(ПутьКХранилищу, КаталогРабочейКопии) Экспорт
Expand Down Expand Up @@ -136,16 +147,18 @@

Лог.Информация("Определена новая версия конфигурации: %1. Будет установлен новый тег", ТекущаяВерсияКонфигурации);

ИмяТега = ПрефиксТегов + СтрЗаменить(ТекущаяВерсияКонфигурации, " ", "");

ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить("tag");
ПараметрыКоманды.Добавить(СтрЗаменить(ТекущаяВерсияКонфигурации, " ", ""));
ПараметрыКоманды.Добавить(ИмяТега);

Попытка
ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды);
Исключение
ТекстОшибки = ОписаниеОшибки();
Если ПропускатьСуществующиеТеги
И ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ТекущаяВерсияКонфигурации) Тогда
И ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ИмяТега) Тогда
Лог.Ошибка(ТекстОшибки);
Иначе
ТребуетсяВызовИсключения = Истина;
Expand All @@ -162,16 +175,18 @@
Если ЗначениеЗаполнено(ТекущаяВерсияХранилища1С) Тогда
Лог.Информация("Устанавливаем тег-нумератор версии хранилища 1С: 'v.%1'", ТекущаяВерсияХранилища1С);

ИмяТега = ПрефиксТегов + "v." + Строка(ТекущаяВерсияХранилища1С);

ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить("tag");
ПараметрыКоманды.Добавить("v." + Строка(ТекущаяВерсияХранилища1С));
ПараметрыКоманды.Добавить(ИмяТега);

Попытка
ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды);
Исключение
ТекстОшибки = ОписаниеОшибки();
Если ПропускатьСуществующиеТеги
И ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ТекущаяВерсияХранилища1С) Тогда
И ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ИмяТега) Тогда
Лог.Ошибка(ТекстОшибки);
Иначе
ТребуетсяВызовИсключения = Истина;
Expand Down Expand Up @@ -281,6 +296,7 @@
ПоследняяВерсияКонфигурации = "";
ТекущаяВерсияКонфигурации = "";
ТекущаяВерсияХранилища1С = "";
ПрефиксТегов = "";

КонецПроцедуры

Expand Down
Loading