Skip to content

Commit 34d7231

Browse files
authored
Merge pull request #24 from ret-Phoenix/develop
Добавил возможность экспорта с указанием минимальной и максимальной версии
2 parents df6393b + 4bdc137 commit 34d7231

File tree

6 files changed

+265
-17
lines changed

6 files changed

+265
-17
lines changed

readme.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@
157157
-verbose - <on|off>
158158
-branch - <имя ветки git>
159159
-format - <hierarchical|plain>
160+
-minversion - Число, номер минимальной версии для выгрузки
161+
-maxversion - Число, номер максимальной версии для выгрузки
162+
-limit - Число, выгрузить неболее limit версий от текущей выгруженной
160163
161164
Возможные команды:
162165
clone - Клонирует существующий репозиторий и создает служебные файлы
@@ -176,3 +179,21 @@
176179
gitsync all <путь к xml-файлу конфигурации>
177180

178181
Подробнее о параметрах команды `all` можно прочитать, запустив `gitsync help all`
182+
183+
# Примеры использования min/max version и limit
184+
185+
Выгрузить все версии начиная с 5
186+
187+
gitsync export store -minversion 5
188+
189+
Выгрузить версии с 5 по 10
190+
191+
gitsync export store -minversion 5 -maxversion 10
192+
193+
Выгрузить не более 2 версий от последней выгруженной. Последняя выгруженная 4, выгружаем 2 следующие: 5 и 6.
194+
195+
gitsync export store -limit 2
196+
197+
Выгрузить 2 версии от последней выгруженной, но не более 5-ой версии. Удобно когда выгрузка идет небольшими партиями, при заранее известном максимальном номере версии.
198+
199+
gitsync export store -maxversion 5 -limit 2

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -870,15 +870,31 @@
870870
Знач КонечнаяВерсия = 0,
871871
Знач Формат = Неопределено,
872872
Знач КоличествоКоммитовДоPush = 0,
873-
Знач URLРепозитория = Неопределено
873+
Знач URLРепозитория = Неопределено,
874+
Знач Лимит = 0
874875
) Экспорт
875876

876877
Лог.Информация("Начало синхронизации с git");
877878
ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
878879
ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии);
879880
ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии);
881+
880882
Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия);
881883
СледующаяВерсия = ТекущаяВерсия + 1;
884+
885+
Если НачальнаяВерсия > 0 Тогда
886+
СледующаяВерсия = Макс(НачальнаяВерсия, СледующаяВерсия);
887+
КонецЕсли;
888+
889+
Если Лимит > 0 Тогда
890+
891+
Если КонечнаяВерсия = 0 Тогда
892+
КонечнаяВерсия = ТекущаяВерсия + Лимит;
893+
Иначе
894+
КонечнаяВерсия = ?(КонечнаяВерсия >= (ТекущаяВерсия + Лимит), КонечнаяВерсия, (ТекущаяВерсия + Лимит));
895+
КонецЕсли;
896+
897+
КонецЕсли;
882898

883899
Если Формат = Неопределено Тогда
884900
Формат = РежимВыгрузкиФайлов.Авто;
@@ -941,16 +957,18 @@
941957

942958
Если МаксимальнаяВерсия <> 0 Тогда
943959
Попытка
944-
ЧислоВерсийПлюс = Число(МаксимальнаяВерсия);
960+
МаксимальнаяВерсия = Число(МаксимальнаяВерсия);
945961
Исключение
946-
ЧислоВерсийПлюс = 0;
962+
МаксимальнаяВерсия = 0;
947963
КонецПопытки;
948964
КонецЕсли;
949965

950-
Если ЧислоВерсийПлюс>0 Тогда
951-
МаксимальнаяВерсияДляРазбора = ТекущаяВерсия + ЧислоВерсийПлюс;
966+
МаксВерсияВХранилище = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаИсторииХранилища);
967+
968+
Если МаксимальнаяВерсия > 0 Тогда
969+
МаксимальнаяВерсияДляРазбора = Мин(МаксВерсияВХранилище, МаксимальнаяВерсия) ;
952970
Иначе
953-
МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаИсторииХранилища);
971+
МаксимальнаяВерсияДляРазбора = МаксВерсияВХранилище;
954972
КонецЕсли;
955973

956974
Возврат МаксимальнаяВерсияДляРазбора;

src/gitsync.os

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@
128128
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", "<on|off>");
129129
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-verbose", "<on|off>");
130130
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-format", "<hierarchical|plain>");
131+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-minversion", "<номер минимальной версии для выгрузки>");
132+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-maxversion", "<номер максимальной версии для выгрузки>");
133+
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-limit", "<выгрузить неболее limit версий от текущей выгруженной>");
131134

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

@@ -179,10 +182,13 @@
179182
Параметры["ЛокальныйКаталогГит"],
180183
Параметры["-email"],
181184
Параметры["-v8version"],
182-
,
183-
,
185+
Параметры["-minversion"],
186+
Параметры["-maxversion"],
184187
Параметры["-format"],
185-
Параметры["-branch"]);
188+
Параметры["-branch"],
189+
0,
190+
Параметры["-limit"]
191+
);
186192

187193
КонецЕсли;
188194

@@ -321,7 +327,8 @@
321327
Знач КонечнаяВерсия = 0,
322328
Знач Формат = Неопределено,
323329
Знач ИмяВетки = Неопределено,
324-
Знач КоличествоКоммитовДоPush = 0) Экспорт
330+
Знач КоличествоКоммитовДоPush = 0,
331+
Знач Лимит = 0) Экспорт
325332

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

@@ -337,6 +344,19 @@
337344
КоличествоКоммитовДоPush = 0;
338345
КонецЕсли;
339346

347+
Если НачальнаяВерсия = "" Тогда
348+
НачальнаяВерсия = 0;
349+
КонецЕсли;
350+
351+
Если КонечнаяВерсия = "" Тогда
352+
КонечнаяВерсия = 0;
353+
КонецЕсли;
354+
355+
Если Лимит = "" Тогда
356+
Лимит = 0;
357+
КонецЕсли;
358+
359+
340360
Если ТипЗнч(КоличествоКоммитовДоPush) = Тип("Строка") Тогда
341361
КоличествоКоммитовДоPush = Число(КоличествоКоммитовДоPush);
342362
КонецЕсли;
@@ -372,7 +392,8 @@
372392
КонечнаяВерсия,
373393
Формат,
374394
КоличествоКоммитовДоPush,
375-
URLРепозитория);
395+
URLРепозитория,
396+
Лимит);
376397

377398
Лог.Информация("Отправка изменений на удаленный узел");
378399
КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки);
@@ -384,17 +405,35 @@
384405

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

387-
Процедура ВыполнитьЭкспортИсходников(Знач Распаковщик, Знач ПутьКХранилищу, Знач ЛокальныйКаталогГит, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = Неопределено, Знач КоличествоКоммитовДоPush = 0, Знач URLРепозитория= Неопределено)
408+
Процедура ВыполнитьЭкспортИсходников(Знач Распаковщик,
409+
Знач ПутьКХранилищу,
410+
Знач ЛокальныйКаталогГит,
411+
Знач НачальнаяВерсия = 0,
412+
Знач КонечнаяВерсия = 0,
413+
Знач Формат = Неопределено,
414+
Знач КоличествоКоммитовДоPush = 0,
415+
Знач URLРепозитория= Неопределено,
416+
Знач Лимит=0)
388417

389418
ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу);
390-
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия, Формат, КоличествоКоммитовДоPush, URLРепозитория);
419+
Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит,
420+
ФайлБазыДанныхХранилища,
421+
НачальнаяВерсия,
422+
КонечнаяВерсия,
423+
Формат,
424+
КоличествоКоммитовДоPush,
425+
URLРепозитория,
426+
Лимит);
391427

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

394430
Процедура ВыполнитьКомандуЭкспортИсходников(Знач Параметры)
395431

396432
ЛокальныйКаталогГит = Параметры["ЛокальныйКаталогГит"];
397433
Формат = Параметры["-format"];
434+
МинВерсия = Параметры["-minversion"];
435+
МаксВерсия = Параметры["-maxversion"];
436+
Лимит = Параметры["-limit"];
398437

399438
Если ЛокальныйКаталогГит = Неопределено Тогда
400439
ЛокальныйКаталогГит = ТекущийКаталог();
@@ -403,12 +442,25 @@
403442
Если Формат = Неопределено Тогда
404443
Формат = РежимВыгрузкиФайлов.Авто;
405444
КонецЕсли;
445+
446+
Если МинВерсия = Неопределено Тогда
447+
МинВерсия = 0;
448+
КонецЕсли;
449+
450+
Если МаксВерсия = Неопределено Тогда
451+
МаксВерсия = 0;
452+
КонецЕсли;
453+
454+
Если Лимит = Неопределено Тогда
455+
Лимит = 0;
456+
КонецЕсли;
457+
406458

407459
Распаковщик = ПолучитьИНастроитьРаспаковщик(Параметры);
408460
Распаковщик.ВерсияПлатформы = Параметры["-v8version"];
409461
Распаковщик.ДоменПочтыДляGitПоУмолчанию = Параметры["-email"];
410462
Лог.Информация("Начинаю выгрузку исходников");
411-
ВыполнитьЭкспортИсходников(Распаковщик, Параметры["ПутьКХранилищу"], ЛокальныйКаталогГит,,,Формат);
463+
ВыполнитьЭкспортИсходников(Распаковщик, Параметры["ПутьКХранилищу"], ЛокальныйКаталогГит, МинВерсия, МаксВерсия, Формат,,,Лимит);
412464
Лог.Информация("Выгрузка завершена");
413465

414466

Binary file not shown.

tests/git-sync-test.os

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141

142142
ФайлХранилища = ПутьКВременномуФайлуХранилища1С();
143143
ТаблицаИсторииХранилища = Распаковщик.ПрочитатьТаблицуИсторииХранилища(ФайлХранилища);
144-
Утверждения.ПроверитьРавенство(ТаблицаИсторииХранилища.Количество(), 3, "таблицаИсторииХранилища.Количество()");
144+
Утверждения.ПроверитьРавенство(ТаблицаИсторииХранилища.Количество(), 8, "таблицаИсторииХранилища.Количество()");
145145
Для Каждого СтрокаВерсии Из ТаблицаИсторииХранилища Цикл
146146
Лог.Отладка("" + СтрокаВерсии.Дата + ": " + СтрокаВерсии.НомерВерсии + ": " + СтрокаВерсии.Комментарий);
147147
КонецЦикла;
@@ -203,7 +203,7 @@
203203

204204
ТаблицаИсторииХранилища = Распаковщик.ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ПутьКФайлуХранилища1С);
205205

206-
Утверждения.ПроверитьРавенство(ТаблицаИсторииХранилища.Количество(), 3, "ТаблицаИсторииХранилища.Количество()");
206+
Утверждения.ПроверитьРавенство(ТаблицаИсторииХранилища.Количество(), 8, "ТаблицаИсторииХранилища.Количество()");
207207

208208
Для Каждого строка Из ТаблицаИсторииХранилища Цикл
209209
Если ПустаяСтрока(строка.Автор) Тогда
@@ -368,7 +368,7 @@
368368
КоличествоКоммитов = КоличествоКоммитов + 1;
369369
КонецЦикла;
370370
ЛогГит.Закрыть();
371-
Утверждения.ПроверитьРавенство(КоличествоКоммитов, 3, "Количество коммитов в git-хранилище");
371+
Утверждения.ПроверитьРавенство(КоличествоКоммитов, 8, "Количество коммитов в git-хранилище");
372372

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

0 commit comments

Comments
 (0)