Skip to content

Commit fc3d78c

Browse files
authored
Merge pull request #68 from Khorevaa/feature/auto-tags
Функциональность установки меток (tags) при изменении версии конфигурации в хранилище
2 parents 2e71a62 + 0d1f837 commit fc3d78c

File tree

5 files changed

+64
-11
lines changed

5 files changed

+64
-11
lines changed

src/core/Классы/КомандаExport.os

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030

3131
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений");
3232
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
33+
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");
34+
3335

3436
Парсер.ДобавитьКоманду(ОписаниеКоманды);
3537

@@ -44,6 +46,7 @@
4446
Лимит = ПараметрыКоманды["-limit"];
4547
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
4648
ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"];
49+
АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"];
4750

4851
Если ЛокальныйКаталогГит = Неопределено Тогда
4952

@@ -81,6 +84,12 @@
8184

8285
КонецЕсли;
8386

87+
Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда
88+
89+
АвтоматическаяУстановкаТэговПоВерсиям = Ложь;
90+
91+
КонецЕсли;
92+
8493
МаксВерсия = Число(МаксВерсия);
8594
МинВерсия = Число(МинВерсия);
8695
Лимит = Число(Лимит);
@@ -99,7 +108,9 @@
99108
,
100109
,
101110
Лимит,
102-
ПрерватьВыполнениеБезКомментарияКВерсии);
111+
ПрерватьВыполнениеБезКомментарияКВерсии,
112+
,
113+
АвтоматическаяУстановкаТэговПоВерсиям);
103114
ДополнительныеПараметры.Лог.Информация("Выгрузка завершена");
104115

105116
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

src/core/Классы/КомандаSync.os

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений");
3232
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
3333
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
34+
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");
3435

3536
Парсер.ДобавитьКоманду(ОписаниеКоманды);
3637

@@ -48,7 +49,9 @@
4849
Парсер.ДобавитьИменованныйПараметр("-tempdir", "<Путь к каталогу временных файлов>");
4950
Парсер.ДобавитьИменованныйПараметр("-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер");
5051
Парсер.ДобавитьПараметрФлаг ("-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
51-
Парсер.ДобавитьПараметрФлаг ("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
52+
53+
Парсер.ДобавитьПараметрФлагКоманды("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
54+
Парсер.ДобавитьПараметрФлагКоманды("-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");
5255

5356
КонецПроцедуры // ЗарегистрироватьКоманду
5457

@@ -70,6 +73,7 @@
7073
КоличествоКоммитовДоPush = ПараметрыКоманды["-push-every-n-commits"];
7174
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
7275
ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"];
76+
АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"];
7377

7478
Если НачальнаяВерсия = Неопределено Тогда
7579

@@ -101,6 +105,12 @@
101105

102106
КонецЕсли;
103107

108+
Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда
109+
110+
АвтоматическаяУстановкаТэговПоВерсиям = Ложь;
111+
112+
КонецЕсли;
113+
104114
НачальнаяВерсия = Число(НачальнаяВерсия);
105115
КонечнаяВерсия = Число(КонечнаяВерсия);
106116
Лимит = Число(Лимит);
@@ -159,10 +169,12 @@
159169
КоличествоКоммитовДоPush,
160170
URLРепозитория,
161171
Лимит,
162-
ПрерватьВыполнениеБезКомментарияКВерсии);
172+
ПрерватьВыполнениеБезКомментарияКВерсии,
173+
ИмяВетки,
174+
АвтоматическаяУстановкаТэговПоВерсиям);
163175

164176
Лог.Информация("Отправка изменений на удаленный узел");
165-
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);
177+
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки, АвтоматическаяУстановкаТэговПоВерсиям);
166178
Если КодВозврата <> 0 Тогда
167179
ВызватьИсключение "Не удалось отправить изменения на удаленный узел (код: " + КодВозврата + ")";
168180
КонецЕсли;

src/core/Классы/МенеджерСинхронизации.os

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@
452452

453453
// Выполняет фиксацию изменений в локальном каталоге git
454454
//
455-
Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата = Неопределено) Экспорт
455+
Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата = Неопределено, Знач НоваяМетка = "") Экспорт
456456

457457
Если Дата = Неопределено Тогда
458458
Дата = ТекущаяДата();
@@ -477,13 +477,22 @@
477477
ДатаДляГит);
478478
Лог.Отладка(СтрШаблон("Вывод команды Commit: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды())));
479479

480+
Если ЗначениеЗаполнено(НоваяМетка) Тогда
481+
ПараметрыКоманды = Новый Массив;
482+
ПараметрыКоманды.Добавить("tag");
483+
ПараметрыКоманды.Добавить(Строка(НоваяМетка));
484+
485+
ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды);
486+
487+
КонецЕсли;
488+
480489
ЗавершитьПроцесс_TGitCache_exe();
481490

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

484493
// Cтандартная процедура git push
485494
//
486-
Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено) Экспорт
495+
Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено, Знач ОтправитьМетки = Ложь) Экспорт
487496

488497
ГитРепозиторий = ПолучитьГитРепозиторий(ЛокальныйРепозиторий);
489498
// Оптимизация git
@@ -861,7 +870,9 @@
861870
Знач КоличествоКоммитовДоPush = 0,
862871
Знач URLРепозитория = Неопределено,
863872
Знач Лимит = 0,
864-
Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь) Экспорт
873+
Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь,
874+
Знач ИмяВетки = Неопределено,
875+
Знач АвтоматическаяУстановкаТэговПоВерсиям = Ложь) Экспорт
865876

866877
Лог.Информация("Начало синхронизации с git");
867878
ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
@@ -906,6 +917,11 @@
906917
ИспользоватьПромежуточныйPUSH = КоличествоКоммитовДоPush > 0;
907918
СчетчикКоммитов = 0;
908919

920+
СтрокаТекущейВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии");
921+
Если СтрокаТекущейВерсии <> Неопределено Тогда
922+
ПоследнняяВерсияКонфигурации = СтрокаТекущейВерсии.Тэг;
923+
КонецЕсли;
924+
909925
Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл
910926

911927
СтрокаВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии");
@@ -920,19 +936,27 @@
920936
ВызватьИсключение СтрШаблон("Нашли следующую версию %1, а комментарий не задан! Автор %2.", СледующаяВерсия, СтрокаВерсии.Автор);;
921937
КонецЕсли;
922938

939+
НоваяМетка = "";
940+
Если ПоследнняяВерсияКонфигурации <> СтрокаВерсии.Тэг
941+
И АвтоматическаяУстановкаТэговПоВерсиям Тогда
942+
ОтправитьНовыеМетки = Истина;
943+
НоваяМетка = СтрокаВерсии.Тэг;
944+
КонецЕсли;
945+
923946
Попытка
924947
Лог.Информация("Получаем исходники для версии " + СледующаяВерсия + ", " + ТекущаяДата());
925948

926949
РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат);
927950
Лог.Отладка("Фиксируем в файле VERSION версию " + СледующаяВерсия);
928951
ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия);
929-
ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата);
952+
ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата, НоваяМетка);
930953
СчетчикКоммитов = СчетчикКоммитов + 1;
931954

932955
Если ИспользоватьПромежуточныйPUSH И
933956
СчетчикКоммитов = КоличествоКоммитовДоPush Тогда
934-
ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория);
957+
ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория, ИмяВетки, ОтправитьНовыеМетки);
935958
СчетчикКоммитов = 0;
959+
ОтправитьНовыеМетки = Ложь;
936960
КонецЕсли;
937961

938962

src/core/Модули/РаспаковщикКонфигурации.os

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@
7979
Знач КоличествоКоммитовДоPush = 0,
8080
Знач URLРепозитория = Неопределено,
8181
Знач Лимит = 0,
82-
Знач ПрерватьВыполнениеБезКомментарияКВерсии) Экспорт
82+
Знач ПрерватьВыполнениеБезКомментарияКВерсии,
83+
Знач ИмяВетки = Неопределено,
84+
Знач АвтоматическаяУстановкаТэговПоВерсиям) Экспорт
8385

8486
ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу);
8587
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит,
@@ -90,7 +92,9 @@
9092
КоличествоКоммитовДоPush,
9193
URLРепозитория,
9294
Лимит,
93-
ПрерватьВыполнениеБезКомментарияКВерсии);
95+
ПрерватьВыполнениеБезКомментарияКВерсии,
96+
ИмяВетки,
97+
АвтоматическаяУстановкаТэговПоВерсиям);
9498

9599
КонецПроцедуры // ВыполнитьЭкспортИсходников
96100

src/xml-config.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@
9898
Ключ = "КоличествоКоммитовДоPush";
9999
ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда
100100
Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии";
101+
ИначеЕсли КлючИЗначение.Ключ = "auto-set-tags" Тогда
102+
Ключ = "АвтоматическаяУстановкаТэговПоВерсиям";
101103
Иначе
102104
ВызватьИсключение НекорректнаяСтруктураНастроек();
103105
КонецЕсли;

0 commit comments

Comments
 (0)