Skip to content

Commit bac404d

Browse files
committed
Добавлен функционал остановки синхронизации, если автор коммита не найдет в AUTHORS
1 parent 118fbd7 commit bac404d

File tree

5 files changed

+48
-10
lines changed

5 files changed

+48
-10
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-limit", "<выгрузить неболее limit версий от текущей выгруженной>");
2828
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");
2929
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
30+
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-check-authors", "Проверка файла AUTHORS, на наличие всех авторов коммитов ");
3031

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

@@ -42,13 +43,20 @@
4243
МаксВерсия = ПараметрыКоманды["-maxversion"];
4344
Лимит = ПараметрыКоманды["-limit"];
4445
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
46+
ПроверитьАвторовХранилища = ПараметрыКоманды["-check-authors"];
4547

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

4850
ЛокальныйКаталогГит = ТекущийКаталог();
4951

5052
КонецЕсли;
5153

54+
Если ПроверитьАвторовХранилища = Неопределено Тогда
55+
56+
ПроверитьАвторовХранилища = Ложь;
57+
58+
КонецЕсли;
59+
5260
Если Формат = Неопределено Тогда
5361

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

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

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер");
3131
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений");
3232
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
33+
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-check-authors", "Проверка файла AUTHORS, на наличие всех авторов коммитов ");
3334

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

@@ -47,6 +48,7 @@
4748
Парсер.ДобавитьИменованныйПараметр("-tempdir", "<Путь к каталогу временных файлов>");
4849
Парсер.ДобавитьИменованныйПараметр("-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер");
4950
Парсер.ДобавитьПараметрФлаг ("-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
51+
Парсер.ДобавитьПараметрФлаг ("-check-authors", "Проверка файла AUTHORS, на наличие всех авторов коммитов ");
5052

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

@@ -67,13 +69,21 @@
6769
Лимит = ПараметрыКоманды["-limit"];
6870
КоличествоКоммитовДоPush = ПараметрыКоманды["-push-every-n-commits"];
6971
ПереименовыватьФайлМодуляОбычнойФормы = ПараметрыКоманды["-process-fatform-modules"];
72+
ПроверитьАвторовХранилища = ПараметрыКоманды["-check-authors"];
73+
7074

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

7377
НачальнаяВерсия = 0;
7478

7579
КонецЕсли;
7680

81+
Если ПроверитьАвторовХранилища = Неопределено Тогда
82+
83+
ПроверитьАвторовХранилища = Ложь;
84+
85+
КонецЕсли;
86+
7787
Если КонечнаяВерсия = Неопределено Тогда
7888

7989
КонечнаяВерсия = 0;
@@ -126,6 +136,7 @@
126136
Лог.Отладка("КонечнаяВерсия = " + КонечнаяВерсия);
127137
Лог.Отладка("Лимит = " + Лимит);
128138
Лог.Отладка("КоличествоКоммитовДоPush = " + КоличествоКоммитовДоPush);
139+
Лог.Отладка("ПроверитьАвторовХранилища = " + ПроверитьАвторовХранилища);
129140

130141
Распаковщик = РаспаковщикКонфигурации.ПолучитьРаспаковщик(ДополнительныеПараметры);
131142
Распаковщик.ВерсияПлатформы = ВерсияПлатформы;
@@ -149,7 +160,8 @@
149160
Формат,
150161
КоличествоКоммитовДоPush,
151162
URLРепозитория,
152-
Лимит);
163+
Лимит,
164+
ПроверитьАвторовХранилища);
153165

154166
Лог.Информация("Отправка изменений на удаленный узел");
155167
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);

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

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,17 +661,21 @@
661661

662662
// Прописывает в таблицы пользователей и версий информацию о git auth вида user <[email protected]>
663663
//
664-
Процедура ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(Знач ТаблицаХранилища, Знач КаталогРепо) Экспорт
664+
Процедура ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(Знач ТаблицаХранилища, Знач КаталогРепо, Знач ПроверитьАвторовХранилища = Ложь) Экспорт
665665

666666
ПутьКФайлуСопоставления = ОбъединитьПути(КаталогРепо, ИмяФайлаАвторов());
667667
ТаблицаСопоставления = ПрочитатьФайлАвторовГитВТаблицуПользователей(ПутьКФайлуСопоставления);
668-
668+
МассивСообщенийОбОшибочныхАвторах = Новый Массив;
669669
Для Каждого Строка Из ТаблицаХранилища Цикл
670670

671671
СтрокаПользователя = ТаблицаСопоставления.Найти(строка.Автор, "Автор");
672672
Если СтрокаПользователя = Неопределено Тогда
673-
СтрокаСообщения = "Пользователю хранилища <%1> не сопоставлен пользователь git. Использую сопоставление по умолчанию";
674-
Лог.Отладка(СтроковыеФункции.ПодставитьПараметрыВСтроку(СтрокаСообщения, строка.Автор));
673+
674+
СтрокаСообщения = СтрШаблон("Пользователю хранилища <%1> не сопоставлен пользователь git.",строка.Автор);
675+
Если ПроверитьАвторовХранилища Тогда
676+
МассивСообщенийОбОшибочныхАвторах.Добавить(СтрокаСообщения);
677+
КонецЕсли;
678+
Лог.Отладка(СтрокаСообщения + " Использую сопоставление по умолчанию");
675679
ПредставлениеАвтора = СтроковыеФункции.ПодставитьПараметрыВСтроку("%1 <%1@%2>", строка.Автор, Строка(ДоменПочтыДляGit()));
676680
Иначе
677681
ПредставлениеАвтора = строкаПользователя.ПредставлениеАвтора;
@@ -681,6 +685,15 @@
681685

682686
КонецЦикла;
683687

688+
Если МассивСообщенийОбОшибочныхАвторах.Количество() > 1 Тогда
689+
Для каждого СообщениеМассива Из МассивСообщенийОбОшибочныхАвторах Цикл
690+
Лог.КритическаяОшибка(СообщениеМассива);
691+
КонецЦикла;
692+
693+
ВызватьИсключение СтрШаблон("В таблице истории версий найдены авторы (количество %1), которые не сопоставлены в AUTHORS",МассивСообщенийОбОшибочныхАвторах.Количество());
694+
695+
КонецЕсли;
696+
684697
КонецПроцедуры
685698

686699
Функция КонвертироватьТаблицуВерсийИзФорматаБД(Знач ТаблицаБД)
@@ -910,12 +923,13 @@
910923
Знач Формат = Неопределено,
911924
Знач КоличествоКоммитовДоPush = 0,
912925
Знач URLРепозитория = Неопределено,
913-
Знач Лимит = 0
926+
Знач Лимит = 0,
927+
Знач ПроверитьАвторовХранилища = Ложь
914928
) Экспорт
915929

916930
Лог.Информация("Начало синхронизации с git");
917931
ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
918-
ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии);
932+
ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии, ПроверитьАвторовХранилища);
919933
ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии);
920934

921935
Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия);

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@
7878
Знач Формат = Неопределено,
7979
Знач КоличествоКоммитовДоPush = 0,
8080
Знач URLРепозитория = Неопределено,
81-
Знач Лимит = 0) Экспорт
81+
Знач Лимит = 0,
82+
Знач ПроверитьАвторовХранилища = Ложь) Экспорт
8283

8384
ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу);
8485
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит,
@@ -88,7 +89,8 @@
8889
Формат,
8990
КоличествоКоммитовДоPush,
9091
URLРепозитория,
91-
Лимит);
92+
Лимит,
93+
ПроверитьАвторовХранилища);
9294

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

src/xml-config.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@
9696
Ключ = "ПутьGit";
9797
ИначеЕсли КлючИЗначение.Ключ = "push-every-n-commits" Тогда
9898
Ключ = "КоличествоКоммитовДоPush";
99+
ИначеЕсли КлючИЗначение.Ключ = "check-authors" Тогда
100+
Ключ = "ПроверитьАвторовХранилища";
99101
Иначе
100102
ВызватьИсключение НекорректнаяСтруктураНастроек();
101103
КонецЕсли;

0 commit comments

Comments
 (0)