Skip to content

Commit 7ae75b1

Browse files
authored
Merge pull request #11 from Khorevaa/Добавление-возможности-push-каждые-n-коммитов
Добавление возможности push каждые n коммитов
2 parents 1c373d1 + 1689ab6 commit 7ae75b1

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@
471471

472472
// Cтандартная процедура git push
473473
//
474-
Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт
474+
Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено) Экспорт
475475

476476
КомандныйФайл = СоздатьКомандныйФайл();
477477
ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log");
@@ -889,7 +889,14 @@
889889

890890
// Основная функция синхронизации. Перемещает в git набор коммитов хранилища 1С
891891
//
892-
Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = Неопределено) Экспорт
892+
Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии,
893+
Знач ФайлХранилища,
894+
Знач НачальнаяВерсия = 0,
895+
Знач КонечнаяВерсия = 0,
896+
Знач Формат = Неопределено,
897+
Знач КоличествоКоммитовДоPush = 0,
898+
Знач URLРепозитория = Неопределено
899+
) Экспорт
893900

894901
Лог.Информация("Начало синхронизации с git");
895902
ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
@@ -906,9 +913,12 @@
906913

907914
МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(ТаблицаИсторииХранилища, ТекущаяВерсия, КонечнаяВерсия);
908915
Лог.Информация("Номер последней версии в хранилище: " + МаксимальнаяВерсияДляРазбора);
909-
916+
917+
ИспользоватьПромежуточныйPUSH = КоличествоКоммитовДоPush > 0;
918+
СчетчикКоммитов = 0;
919+
910920
Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл
911-
921+
912922
СтрокаВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии");
913923
Если СтрокаВерсии <> Неопределено Тогда
914924

@@ -923,6 +933,14 @@
923933

924934
РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат);
925935
ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата);
936+
СчетчикКоммитов = СчетчикКоммитов + 1;
937+
938+
Если ИспользоватьПромежуточныйPUSH И
939+
СчетчикКоммитов = КоличествоКоммитовДоPush Тогда
940+
ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория);
941+
СчетчикКоммитов = 0;
942+
КонецЕсли;
943+
926944

927945
Исключение
928946
Лог.Отладка("Откатываем файл VERSION после ошибки");

src/gitsync.os

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,8 @@
291291
Знач НачальнаяВерсия = 0,
292292
Знач КонечнаяВерсия = 0,
293293
Знач Формат = Неопределено,
294-
Знач ИмяВетки = Неопределено) Экспорт
294+
Знач ИмяВетки = Неопределено,
295+
Знач КоличествоКоммитовДоPush = 0) Экспорт
295296

296297
Лог.Информация("Начинаю синхронизацию хранилища 1С и репозитария GIT");
297298

@@ -302,6 +303,14 @@
302303
Если Формат = Неопределено Тогда
303304
Формат = РежимВыгрузкиФайлов.Авто;
304305
КонецЕсли;
306+
307+
Если КоличествоКоммитовДоPush = Неопределено Тогда
308+
КоличествоКоммитовДоPush = 0;
309+
КонецЕсли;
310+
311+
Если ТипЗнч(КоличествоКоммитовДоPush) = Тип("Строка") Тогда
312+
КоличествоКоммитовДоPush = Число(КоличествоКоммитовДоPush);
313+
КонецЕсли;
305314

306315
Если ИмяВетки = Неопределено Тогда
307316
ИмяВетки = "master";
@@ -314,7 +323,7 @@
314323
Лог.Отладка("ВерсияПлатформы = " + ВерсияПлатформы);
315324
Лог.Отладка("Формат = " + Формат);
316325
Лог.Отладка("ИмяВетки = " + ИмяВетки);
317-
326+
318327

319328
Распаковщик = ПолучитьРаспаковщик();
320329
Распаковщик.ВерсияПлатформы = ВерсияПлатформы;
@@ -327,7 +336,14 @@
327336
КонецЕсли;
328337

329338
Лог.Информация("Синхронизация изменений с хранилищем");
330-
ВыполнитьЭкспортИсходников(Распаковщик, ПутьКХранилищу, ЛокальныйКаталогГит, НачальнаяВерсия, КонечнаяВерсия, Формат);
339+
ВыполнитьЭкспортИсходников(Распаковщик,
340+
ПутьКХранилищу,
341+
ЛокальныйКаталогГит,
342+
НачальнаяВерсия,
343+
КонечнаяВерсия,
344+
Формат,
345+
КоличествоКоммитовДоPush,
346+
URLРепозитория);
331347

332348
Лог.Информация("Отправка изменений на удаленный узел");
333349
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);
@@ -339,10 +355,10 @@
339355

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

342-
Процедура ВыполнитьЭкспортИсходников(Знач Распаковщик, Знач ПутьКХранилищу, Знач ЛокальныйКаталогГит, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = Неопределено)
358+
Процедура ВыполнитьЭкспортИсходников(Знач Распаковщик, Знач ПутьКХранилищу, Знач ЛокальныйКаталогГит, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = Неопределено, Знач КоличествоКоммитовДоPush = 0, Знач URLРепозитория= Неопределено, Знач ИмяВетки = Неопределено)
343359

344360
ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу);
345-
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия, Формат);
361+
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия, Формат, КоличествоКоммитовДоPush, URLРепозитория, ИмяВетки);
346362

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

src/xml-config.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@
9494
Ключ = "ПутьКПлатформе83";
9595
ИначеЕсли КлючИЗначение.Ключ = "git-executable" Тогда
9696
Ключ = "ПутьGit";
97+
ИначеЕсли КлючИЗначение.Ключ = "push-every-n-commits" Тогда
98+
Ключ = "КоличествоКоммитовДоPush";
9799
Иначе
98100
ВызватьИсключение НекорректнаяСтруктураНастроек();
99101
КонецЕсли;

0 commit comments

Comments
 (0)