Skip to content

Функциональность остановки (прерывания) синхронизации при незаполненном комментарии к версии хранилища #67

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 7 commits into from
Aug 24, 2017
Merged
19 changes: 18 additions & 1 deletion src/core/Классы/КомандаExport.os
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");

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

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

Expand All @@ -42,6 +43,7 @@
МаксВерсия = ПараметрыКоманды["-maxversion"];
Лимит = ПараметрыКоманды["-limit"];
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"];

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

Expand Down Expand Up @@ -73,6 +75,12 @@

КонецЕсли;

Если ПрерватьВыполнениеБезКомментарияКВерсии = Неопределено Тогда

ПрерватьВыполнениеБезКомментарияКВерсии = Ложь;

КонецЕсли;

МаксВерсия = Число(МаксВерсия);
МинВерсия = Число(МинВерсия);
Лимит = Число(Лимит);
Expand All @@ -82,7 +90,16 @@
Распаковщик.ДоменПочтыДляGitПоУмолчанию = ПараметрыКоманды["-email"];
Распаковщик.ПереименовыватьФайлМодуляОбычнойФормы = ПереименовыватьФайлМодуляОбычнойФормы;
ДополнительныеПараметры.Лог.Информация("Начинаю выгрузку исходников");
РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик, ПараметрыКоманды["ПутьКХранилищу"], ЛокальныйКаталогГит, МинВерсия, МаксВерсия, Формат,,, Лимит);
РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик,
ПараметрыКоманды["ПутьКХранилищу"],
ЛокальныйКаталогГит,
МинВерсия,
МаксВерсия,
Формат,
,
,
Лимит,
ПрерватьВыполнениеБезКомментарияКВерсии);
ДополнительныеПараметры.Лог.Информация("Выгрузка завершена");

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

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

Expand All @@ -47,6 +48,7 @@
Парсер.ДобавитьИменованныйПараметр("-tempdir", "<Путь к каталогу временных файлов>");
Парсер.ДобавитьИменованныйПараметр("-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер");
Парсер.ДобавитьПараметрФлаг ("-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
Парсер.ДобавитьПараметрФлаг ("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");

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

Expand All @@ -67,6 +69,7 @@
Лимит = ПараметрыКоманды["-limit"];
КоличествоКоммитовДоPush = ПараметрыКоманды["-push-every-n-commits"];
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"];

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

Expand All @@ -92,6 +95,12 @@

КонецЕсли;

Если ПрерватьВыполнениеБезКомментарияКВерсии = Неопределено Тогда

ПрерватьВыполнениеБезКомментарияКВерсии = Ложь;

КонецЕсли;

НачальнаяВерсия = Число(НачальнаяВерсия);
КонечнаяВерсия = Число(КонечнаяВерсия);
Лимит = Число(Лимит);
Expand Down Expand Up @@ -149,7 +158,8 @@
Формат,
КоличествоКоммитовДоPush,
URLРепозитория,
Лимит);
Лимит,
ПрерватьВыполнениеБезКомментарияКВерсии);

Лог.Информация("Отправка изменений на удаленный узел");
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -918,8 +918,8 @@
Знач Формат = Неопределено,
Знач КоличествоКоммитовДоPush = 0,
Знач URLРепозитория = Неопределено,
Знач Лимит = 0
) Экспорт
Знач Лимит = 0,
Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь) Экспорт

Лог.Информация("Начало синхронизации с git");
ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
Expand Down Expand Up @@ -952,6 +952,10 @@
Формат = РежимВыгрузкиФайлов.Авто;
КонецЕсли;

Если ПрерватьВыполнениеБезКомментарияКВерсии = Неопределено Тогда
ПрерватьВыполнениеБезКомментарияКВерсии = Ложь;
КонецЕсли;

Лог.Отладка("Используется формат выгрузки " + Формат);

МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(ТаблицаИсторииХранилища, ТекущаяВерсия, КонечнаяВерсия);
Expand All @@ -969,6 +973,11 @@
ВызватьИсключение "Нашли следующую версию, а автор не прописан "+СледующаяВерсия + " автор "+СтрокаВерсии.Автор;
КонецЕсли;

Если ПустаяСтрока(СтрокаВерсии.Комментарий)
И ПрерватьВыполнениеБезКомментарияКВерсии Тогда
ВызватьИсключение СтрШаблон("Нашли следующую версию %1, а комментарий не задан! Автор %2.", СледующаяВерсия, СтрокаВерсии.Автор);;
КонецЕсли;

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

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

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

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

Expand Down
2 changes: 2 additions & 0 deletions src/xml-config.os
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@
Ключ = "ПутьGit";
ИначеЕсли КлючИЗначение.Ключ = "push-every-n-commits" Тогда
Ключ = "КоличествоКоммитовДоPush";
ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда
Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии";
Иначе
ВызватьИсключение НекорректнаяСтруктураНастроек();
КонецЕсли;
Expand Down
25 changes: 17 additions & 8 deletions tests/git-sync-test.os
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
Перем юТест;
Перем Распаковщик;
Перем Лог;
Перем ЭтоWindows;

Процедура Инициализация()

Expand Down Expand Up @@ -129,7 +130,7 @@

Распаковщик.РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, КаталогИерархическойВыгрузки, РежимВыгрузкиФайлов.Плоский);

ФайлПереименований = Новый Файл(КаталогИерархическойВыгрузки + "\renames.txt");
ФайлПереименований = Новый Файл(ОбъединитьПути(КаталогИерархическойВыгрузки,"renames.txt"));
Утверждения.ПроверитьИстину(ФайлПереименований.Существует(), "Не удалось разложим модули 1С по иерархии - не существует файл <"+ФайлПереименований.ПолноеИмя+">");

МассивФайлов = НайтиФайлы(КаталогИерархическойВыгрузки,"*.*");
Expand Down Expand Up @@ -355,7 +356,7 @@
ИмяФайлаЛогаГит = ВременныеФайлы.НовоеИмяФайла("txt");

Батник = Новый КомандныйФайл;
Батник.ДобавитьКоманду("cd /d " + ОбернутьВКавычки(КаталогИсходников));
Батник.ДобавитьКоманду(СтрШаблон("cd %1 %2",?(ЭтоWindows, "/d", ""), ОбернутьВКавычки(КаталогИсходников)));
Батник.ДобавитьКоманду("git log --pretty=oneline >"+ОбернутьВКавычки(ИмяФайлаЛогаГит));

КодВозврата = Батник.Исполнить();
Expand Down Expand Up @@ -426,7 +427,7 @@
ВременныйРепо = ВыполнитьКлонированиеТестовогоРепо();

СоздатьФайлАвторовГит_ДляТестов(ВременныйРепо.ЛокальныйРепозиторий);
Утверждения.ПроверитьИстину(Новый Файл(ВременныйРепо.ЛокальныйРепозиторий+"\AUTHORS").Существует());
Утверждения.ПроверитьИстину(Новый Файл(ОбъединитьПути(ВременныйРепо.ЛокальныйРепозиторий,"AUTHORS")).Существует());

Распаковщик.ВыполнитьКоммитГит(ВременныйРепо.ЛокальныйРепозиторий, "test commit", "Администратор <admin@localhost>");

Expand All @@ -440,7 +441,7 @@
ВременныйРепо = ВыполнитьКлонированиеТестовогоРепо();

СоздатьФайлАвторовГит_ДляТестов(ВременныйРепо.ЛокальныйРепозиторий);
Утверждения.ПроверитьИстину(Новый Файл(ВременныйРепо.ЛокальныйРепозиторий+"\AUTHORS").Существует());
Утверждения.ПроверитьИстину(Новый Файл(ОбъединитьПути(ВременныйРепо.ЛокальныйРепозиторий,"AUTHORS")).Существует());

Распаковщик.ВыполнитьКоммитГит(ВременныйРепо.ЛокальныйРепозиторий, "test commit", "Администратор <admin@localhost>");

Expand Down Expand Up @@ -472,19 +473,25 @@
ФайлЛога = ВременныеФайлы.СоздатьФайл("log");
Батник = Новый КомандныйФайл();
Батник.Создать();
Батник.ДобавитьКоманду("chcp 1251 > nul");
Батник.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйКаталог));
Если ЭтоWindows Тогда
Батник.ДобавитьКоманду("chcp 1251 > nul");
КонецЕсли;
Батник.ДобавитьКоманду(СтрШаблон("cd %1 ""%2""",?(ЭтоWindows, "/d", ""), ЛокальныйКаталог));

ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить("git clone");
ПараметрыКоманды.Добавить(URLРепозитария);
ПараметрыКоманды.Добавить(ОбернутьВКавычки("%CD%"));
ПараметрыКоманды.Добавить(ОбернутьВКавычки(ЛокальныйКаталог));
ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ФайлЛога, Истина));

КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды);
Лог.Отладка("Командная строка git clone:" + Символы.ПС + КоманднаяСтрока);
Батник.ДобавитьКоманду(КоманднаяСтрока);
Батник.ДобавитьКоманду("exit /b %ERRORLEVEL%");
Если Не ЭтоWindows Тогда
Батник.ДобавитьКоманду("exit $#");
Иначе
Батник.ДобавитьКоманду("exit /b %ERRORLEVEL%");
КонецЕсли;

РезультатКлонирования = Батник.Исполнить();
// вывод всех сообщений от Git
Expand Down Expand Up @@ -537,5 +544,7 @@
КонецПроцедуры

//////////////////////////////////////////////////////////////////////////////
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

Инициализация();
5 changes: 4 additions & 1 deletion tests/test-export_with_min_max_versions.os
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
Перем юТест;
Перем Распаковщик;
Перем Лог;
Перем ЭтоWindows;

Процедура Инициализация()

Expand Down Expand Up @@ -89,7 +90,7 @@
ИмяФайлаЛогаГит = ВременныеФайлы.НовоеИмяФайла("txt");

Батник = Новый КомандныйФайл;
Батник.ДобавитьКоманду("cd /d " + ОбернутьВКавычки(КаталогИсходников));
Батник.ДобавитьКоманду(СтрШаблон("cd %1 %2",?(ЭтоWindows, "/d", ""), ОбернутьВКавычки(КаталогИсходников)));
Батник.ДобавитьКоманду("git log --pretty=oneline >"+ОбернутьВКавычки(ИмяФайлаЛогаГит));

КодВозврата = Батник.Исполнить();
Expand Down Expand Up @@ -153,5 +154,7 @@
КонецФункции

//////////////////////////////////////////////////////////////////////////////
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

Инициализация();