Skip to content

Функциональность установки меток (tags) при изменении версии конфигурации в хранилище #68

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Aug 24, 2017
Merged
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
13 changes: 12 additions & 1 deletion src/core/Классы/КомандаExport.os
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

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


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

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

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

Expand Down Expand Up @@ -81,6 +84,12 @@

КонецЕсли;

Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда

АвтоматическаяУстановкаТэговПоВерсиям = Ложь;

КонецЕсли;

МаксВерсия = Число(МаксВерсия);
МинВерсия = Число(МинВерсия);
Лимит = Число(Лимит);
Expand All @@ -99,7 +108,9 @@
,
,
Лимит,
ПрерватьВыполнениеБезКомментарияКВерсии);
ПрерватьВыполнениеБезКомментарияКВерсии,
,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что за новый параметр, передаваемый через запятую? Ветка?
в PR ничего об этом не сказано :(

АвтоматическаяУстановкаТэговПоВерсиям);
ДополнительныеПараметры.Лог.Информация("Выгрузка завершена");

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
Expand Down
18 changes: 15 additions & 3 deletions src/core/Классы/КомандаSync.os
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений");
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");

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

Expand All @@ -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", "Автоматическая установка тэгов по версия конфиграции");

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

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

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

Expand Down Expand Up @@ -101,6 +105,12 @@

КонецЕсли;

Если АвтоматическаяУстановкаТэговПоВерсиям = Неопределено Тогда

АвтоматическаяУстановкаТэговПоВерсиям = Ложь;

КонецЕсли;

НачальнаяВерсия = Число(НачальнаяВерсия);
КонечнаяВерсия = Число(КонечнаяВерсия);
Лимит = Число(Лимит);
Expand Down Expand Up @@ -159,10 +169,12 @@
КоличествоКоммитовДоPush,
URLРепозитория,
Лимит,
ПрерватьВыполнениеБезКомментарияКВерсии);
ПрерватьВыполнениеБезКомментарияКВерсии,
ИмяВетки,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И здесь передается новый параметр ИмяВетки !
в PR ничего об этом не сказано :(

АвтоматическаяУстановкаТэговПоВерсиям);

Лог.Информация("Отправка изменений на удаленный узел");
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки, АвтоматическаяУстановкаТэговПоВерсиям);
Если КодВозврата <> 0 Тогда
ВызватьИсключение "Не удалось отправить изменения на удаленный узел (код: " + КодВозврата + ")";
КонецЕсли;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@

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

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

Если ЗначениеЗаполнено(НоваяМетка) Тогда
ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить("tag");
ПараметрыКоманды.Добавить(Строка(НоваяМетка));

ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды);

КонецЕсли;

ЗавершитьПроцесс_TGitCache_exe();

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

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

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

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

СтрокаТекущейВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии");
Если СтрокаТекущейВерсии <> Неопределено Тогда
ПоследнняяВерсияКонфигурации = СтрокаТекущейВерсии.Тэг;
КонецЕсли;

Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл

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

НоваяМетка = "";
Если ПоследнняяВерсияКонфигурации <> СтрокаВерсии.Тэг
И АвтоматическаяУстановкаТэговПоВерсиям Тогда
ОтправитьНовыеМетки = Истина;
НоваяМетка = СтрокаВерсии.Тэг;
КонецЕсли;

Попытка
Лог.Информация("Получаем исходники для версии " + СледующаяВерсия + ", " + ТекущаяДата());

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

Если ИспользоватьПромежуточныйPUSH И
СчетчикКоммитов = КоличествоКоммитовДоPush Тогда
ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория);
ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория, ИмяВетки, ОтправитьНовыеМетки);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И здесь передается новый параметр ИмяВетки !
в PR ничего об этом не сказано :(

СчетчикКоммитов = 0;
ОтправитьНовыеМетки = Ложь;
КонецЕсли;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@
Знач КоличествоКоммитовДоPush = 0,
Знач URLРепозитория = Неопределено,
Знач Лимит = 0,
Знач ПрерватьВыполнениеБезКомментарияКВерсии) Экспорт
Знач ПрерватьВыполнениеБезКомментарияКВерсии,
Знач ИмяВетки = Неопределено,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И здесь передается новый параметр ИмяВетки !
в PR ничего об этом не сказано :(

Знач АвтоматическаяУстановкаТэговПоВерсиям) Экспорт

ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу);
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит,
Expand All @@ -90,7 +92,9 @@
КоличествоКоммитовДоPush,
URLРепозитория,
Лимит,
ПрерватьВыполнениеБезКомментарияКВерсии);
ПрерватьВыполнениеБезКомментарияКВерсии,
ИмяВетки,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И здесь передается новый параметр ИмяВетки !
в PR ничего об этом не сказано :(

АвтоматическаяУстановкаТэговПоВерсиям);

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

Expand Down
2 changes: 2 additions & 0 deletions src/xml-config.os
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@
Ключ = "КоличествоКоммитовДоPush";
ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда
Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии";
ИначеЕсли КлючИЗначение.Ключ = "auto-set-tags" Тогда
Ключ = "АвтоматическаяУстановкаТэговПоВерсиям";
Иначе
ВызватьИсключение НекорректнаяСтруктураНастроек();
КонецЕсли;
Expand Down