Skip to content
Merged
21 changes: 21 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@
-verbose - <on|off>
-branch - <имя ветки git>
-format - <hierarchical|plain>
-minversion - Число, номер минимальной версии для выгрузки
-maxversion - Число, номер максимальной версии для выгрузки
-limit - Число, выгрузить неболее limit версий от текущей выгруженной

Возможные команды:
clone - Клонирует существующий репозиторий и создает служебные файлы
Expand All @@ -176,3 +179,21 @@
gitsync all <путь к xml-файлу конфигурации>

Подробнее о параметрах команды `all` можно прочитать, запустив `gitsync help all`

# Примеры использования min/max version и limit

Выгрузить все версии начиная с 5

gitsync export store -minversion 5

Выгрузить версии с 5 по 10

gitsync export store -minversion 5 -maxversion 10

Выгрузить не более 2 версий от последней выгруженной. Последняя выгруженная 4, выгружаем 2 следующие: 5 и 6.

gitsync export store -limit 2

Выгрузить 2 версии от последней выгруженной, но не более 5-ой версии. Удобно когда выгрузка идет небольшими партиями, при заранее известном максимальном номере версии.

gitsync export store -maxversion 5 -limit 2
Original file line number Diff line number Diff line change
Expand Up @@ -870,15 +870,31 @@
Знач КонечнаяВерсия = 0,
Знач Формат = Неопределено,
Знач КоличествоКоммитовДоPush = 0,
Знач URLРепозитория = Неопределено
Знач URLРепозитория = Неопределено,
Знач Лимит = 0
) Экспорт

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

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

Если НачальнаяВерсия > 0 Тогда
СледующаяВерсия = Макс(НачальнаяВерсия, СледующаяВерсия);
КонецЕсли;

Если Лимит > 0 Тогда

Если КонечнаяВерсия = 0 Тогда
КонечнаяВерсия = ТекущаяВерсия + Лимит;
Иначе
КонечнаяВерсия = ?(КонечнаяВерсия >= (ТекущаяВерсия + Лимит), КонечнаяВерсия, (ТекущаяВерсия + Лимит));
КонецЕсли;

КонецЕсли;

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

Если МаксимальнаяВерсия <> 0 Тогда
Попытка
ЧислоВерсийПлюс = Число(МаксимальнаяВерсия);
МаксимальнаяВерсия = Число(МаксимальнаяВерсия);
Исключение
ЧислоВерсийПлюс = 0;
МаксимальнаяВерсия = 0;
КонецПопытки;
КонецЕсли;

Если ЧислоВерсийПлюс>0 Тогда
МаксимальнаяВерсияДляРазбора = ТекущаяВерсия + ЧислоВерсийПлюс;
МаксВерсияВХранилище = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаИсторииХранилища);

Если МаксимальнаяВерсия > 0 Тогда
МаксимальнаяВерсияДляРазбора = Мин(МаксВерсияВХранилище, МаксимальнаяВерсия) ;
Иначе
МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаИсторииХранилища);
МаксимальнаяВерсияДляРазбора = МаксВерсияВХранилище;
КонецЕсли;

Возврат МаксимальнаяВерсияДляРазбора;
Expand Down
68 changes: 60 additions & 8 deletions src/gitsync.os
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,9 @@
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-verbose", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-format", "<hierarchical|plain>");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-minversion", "<номер минимальной версии для выгрузки>");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-maxversion", "<номер максимальной версии для выгрузки>");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-limit", "<выгрузить неболее limit версий от текущей выгруженной>");

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

Expand Down Expand Up @@ -179,10 +182,13 @@
Параметры["ЛокальныйКаталогГит"],
Параметры["-email"],
Параметры["-v8version"],
,
,
Параметры["-minversion"],
Параметры["-maxversion"],
Параметры["-format"],
Параметры["-branch"]);
Параметры["-branch"],
0,
Параметры["-limit"]
);

КонецЕсли;

Expand Down Expand Up @@ -321,7 +327,8 @@
Знач КонечнаяВерсия = 0,
Знач Формат = Неопределено,
Знач ИмяВетки = Неопределено,
Знач КоличествоКоммитовДоPush = 0) Экспорт
Знач КоличествоКоммитовДоPush = 0,
Знач Лимит = 0) Экспорт

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

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

Если НачальнаяВерсия = "" Тогда
НачальнаяВерсия = 0;
КонецЕсли;

Если КонечнаяВерсия = "" Тогда
КонечнаяВерсия = 0;
КонецЕсли;

Если Лимит = "" Тогда
Лимит = 0;
КонецЕсли;


Если ТипЗнч(КоличествоКоммитовДоPush) = Тип("Строка") Тогда
КоличествоКоммитовДоPush = Число(КоличествоКоммитовДоPush);
КонецЕсли;
Expand Down Expand Up @@ -372,7 +392,8 @@
КонечнаяВерсия,
Формат,
КоличествоКоммитовДоPush,
URLРепозитория);
URLРепозитория,
Лимит);

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

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

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

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

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

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

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

Если ЛокальныйКаталогГит = Неопределено Тогда
ЛокальныйКаталогГит = ТекущийКаталог();
Expand All @@ -403,12 +442,25 @@
Если Формат = Неопределено Тогда
Формат = РежимВыгрузкиФайлов.Авто;
КонецЕсли;

Если МинВерсия = Неопределено Тогда
МинВерсия = 0;
КонецЕсли;

Если МаксВерсия = Неопределено Тогда
МаксВерсия = 0;
КонецЕсли;

Если Лимит = Неопределено Тогда
Лимит = 0;
КонецЕсли;


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


Expand Down
Binary file not shown.
6 changes: 3 additions & 3 deletions tests/git-sync-test.os
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@

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

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

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

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

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

Expand Down
Loading