diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" index 4e6eda41..8a90cf1a 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" @@ -30,6 +30,8 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -44,6 +46,7 @@ Лимит = ПараметрыКоманды["-limit"]; ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"]; ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"]; + АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"]; Если ЛокальныйКаталогГит = Неопределено Тогда @@ -81,6 +84,12 @@ КонецЕсли; + Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда + + АвтоматическаяУстановкаТэговПоВерсиям = Ложь; + + КонецЕсли; + МаксВерсия = Число(МаксВерсия); МинВерсия = Число(МинВерсия); Лимит = Число(Лимит); @@ -99,7 +108,9 @@ , , Лимит, - ПрерватьВыполнениеБезКомментарияКВерсии); + ПрерватьВыполнениеБезКомментарияКВерсии, + , + АвтоматическаяУстановкаТэговПоВерсиям); ДополнительныеПараметры.Лог.Информация("Выгрузка завершена"); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" index d32b1345..ae08aabc 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" @@ -31,6 +31,7 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений"); Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl"); Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой"); + Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -48,7 +49,9 @@ Парсер.ДобавитьИменованныйПараметр("-tempdir", "<Путь к каталогу временных файлов>"); Парсер.ДобавитьИменованныйПараметр("-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер"); Парсер.ДобавитьПараметрФлаг ("-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl"); - Парсер.ДобавитьПараметрФлаг ("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой"); + + Парсер.ДобавитьПараметрФлагКоманды("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой"); + Парсер.ДобавитьПараметрФлагКоманды("-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции"); КонецПроцедуры // ЗарегистрироватьКоманду @@ -70,6 +73,7 @@ КоличествоКоммитовДоPush = ПараметрыКоманды["-push-every-n-commits"]; ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"]; ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"]; + АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"]; Если НачальнаяВерсия = Неопределено Тогда @@ -101,6 +105,12 @@ КонецЕсли; + Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда + + АвтоматическаяУстановкаТэговПоВерсиям = Ложь; + + КонецЕсли; + НачальнаяВерсия = Число(НачальнаяВерсия); КонечнаяВерсия = Число(КонечнаяВерсия); Лимит = Число(Лимит); @@ -159,10 +169,12 @@ КоличествоКоммитовДоPush, URLРепозитория, Лимит, - ПрерватьВыполнениеБезКомментарияКВерсии); + ПрерватьВыполнениеБезКомментарияКВерсии, + ИмяВетки, + АвтоматическаяУстановкаТэговПоВерсиям); Лог.Информация("Отправка изменений на удаленный узел"); - КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки); + КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки, АвтоматическаяУстановкаТэговПоВерсиям); Если КодВозврата <> 0 Тогда ВызватьИсключение "Не удалось отправить изменения на удаленный узел (код: " + КодВозврата + ")"; КонецЕсли; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 7248404f..ea817092 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -452,7 +452,7 @@ // Выполняет фиксацию изменений в локальном каталоге git // -Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата = Неопределено) Экспорт +Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата = Неопределено, Знач НоваяМетка = "") Экспорт Если Дата = Неопределено Тогда Дата = ТекущаяДата(); @@ -477,13 +477,22 @@ ДатаДляГит); Лог.Отладка(СтрШаблон("Вывод команды Commit: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды()))); + Если ЗначениеЗаполнено(НоваяМетка) Тогда + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("tag"); + ПараметрыКоманды.Добавить(Строка(НоваяМетка)); + + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + + КонецЕсли; + ЗавершитьПроцесс_TGitCache_exe(); КонецПроцедуры // Cтандартная процедура git push // -Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено) Экспорт +Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено, Знач ОтправитьМетки = Ложь) Экспорт ГитРепозиторий = ПолучитьГитРепозиторий(ЛокальныйРепозиторий); // Оптимизация git @@ -861,7 +870,9 @@ Знач КоличествоКоммитовДоPush = 0, Знач URLРепозитория = Неопределено, Знач Лимит = 0, - Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь) Экспорт + Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь, + Знач ИмяВетки = Неопределено, + Знач АвтоматическаяУстановкаТэговПоВерсиям = Ложь) Экспорт Лог.Информация("Начало синхронизации с git"); ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); @@ -906,6 +917,11 @@ ИспользоватьПромежуточныйPUSH = КоличествоКоммитовДоPush > 0; СчетчикКоммитов = 0; + СтрокаТекущейВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии"); + Если СтрокаТекущейВерсии <> Неопределено Тогда + ПоследнняяВерсияКонфигурации = СтрокаТекущейВерсии.Тэг; + КонецЕсли; + Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл СтрокаВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии"); @@ -920,19 +936,27 @@ ВызватьИсключение СтрШаблон("Нашли следующую версию %1, а комментарий не задан! Автор %2.", СледующаяВерсия, СтрокаВерсии.Автор);; КонецЕсли; + НоваяМетка = ""; + Если ПоследнняяВерсияКонфигурации <> СтрокаВерсии.Тэг + И АвтоматическаяУстановкаТэговПоВерсиям Тогда + ОтправитьНовыеМетки = Истина; + НоваяМетка = СтрокаВерсии.Тэг; + КонецЕсли; + Попытка Лог.Информация("Получаем исходники для версии " + СледующаяВерсия + ", " + ТекущаяДата()); РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат); Лог.Отладка("Фиксируем в файле VERSION версию " + СледующаяВерсия); ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия); - ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата); + ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата, НоваяМетка); СчетчикКоммитов = СчетчикКоммитов + 1; Если ИспользоватьПромежуточныйPUSH И СчетчикКоммитов = КоличествоКоммитовДоPush Тогда - ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория); + ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория, ИмяВетки, ОтправитьНовыеМетки); СчетчикКоммитов = 0; + ОтправитьНовыеМетки = Ложь; КонецЕсли; diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index 1921654d..2f0e203b 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -79,7 +79,9 @@ Знач КоличествоКоммитовДоPush = 0, Знач URLРепозитория = Неопределено, Знач Лимит = 0, - Знач ПрерватьВыполнениеБезКомментарияКВерсии) Экспорт + Знач ПрерватьВыполнениеБезКомментарияКВерсии, + Знач ИмяВетки = Неопределено, + Знач АвтоматическаяУстановкаТэговПоВерсиям) Экспорт ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу); Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, @@ -90,7 +92,9 @@ КоличествоКоммитовДоPush, URLРепозитория, Лимит, - ПрерватьВыполнениеБезКомментарияКВерсии); + ПрерватьВыполнениеБезКомментарияКВерсии, + ИмяВетки, + АвтоматическаяУстановкаТэговПоВерсиям); КонецПроцедуры // ВыполнитьЭкспортИсходников diff --git a/src/xml-config.os b/src/xml-config.os index 13c57fdf..7ad4fe2c 100644 --- a/src/xml-config.os +++ b/src/xml-config.os @@ -98,6 +98,8 @@ Ключ = "КоличествоКоммитовДоPush"; ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии"; + ИначеЕсли КлючИЗначение.Ключ = "auto-set-tags" Тогда + Ключ = "АвтоматическаяУстановкаТэговПоВерсиям"; Иначе ВызватьИсключение НекорректнаяСтруктураНастроек(); КонецЕсли;