Skip to content
16 changes: 15 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,4 +196,18 @@

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

gitsync export store -maxversion 5 -limit 2
gitsync export store -maxversion 5 -limit 2

# Решение проблемы вызванной ошибкой "Не обнаружено свободной лицензии!"

В случае возникновения ошибки "Не обнаружено свободной лицензии!" рекомендуется воспользоваться параметром ```-amount-look-for-license```. Данный параметр может быть использован со следующими командами ```export``` и ```sync```.
При возникновении данной ошибки повторное получение лицензии происходит через 10 сек.
По умолчанию данный параметр равен 1.

Выполнить 5 попыток получения лицензии:

gitsync export -amount-look-for-license 5

Выполнять получение лицензии без ограничения:

gitsync export -amount-look-for-license 0
2 changes: 2 additions & 0 deletions src/core/Классы/КомандаExport.os
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");

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

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

КонецПроцедуры // ЗарегистрироватьКоманду
Expand Down
3 changes: 2 additions & 1 deletion src/core/Классы/КомандаSync.os
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-format", "<hierarchical|plain>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-push-every-n-commits", "<число> количество коммитов до промежуточной отправки на удаленный сервер");
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений");
Парсер.ДобавитьПараметрФлагКоманды (ОписаниеКоманды, "-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");

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

Expand Down
65 changes: 45 additions & 20 deletions src/core/Классы/МенеджерСинхронизации.os
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
Перем мАвторизацияВХранилищеСредствами1С;
Перем ЭтоWindows;
Перем УдалятьВременныеФайлы;
Перем КоличествоЦикловОжиданияЛицензииПоУмолчанию;

///////////////////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
Expand Down Expand Up @@ -68,28 +69,42 @@

ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner");
ЛогКонфигуратора.УстановитьУровень(Лог.Уровень());

Попытка

Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь);

Исключение

// проверим текст ошибки, если текст содержит информацию о необходимости конвертировать
// тогда выполним конвертацию и повторно попытаемся загрузить файл
ТекстОшибки = Конфигуратор.ВыводКоманды();
Если Найти(Врег(ТекстОшибки), Врег("Структура конфигурации несовместима с текущей версией программы")) Тогда

Конфигуратор.СконвертироватьФайлКонфигурации(ФайлКонфигурации);
КоличествоЦикловОжиданияЛицензии = ПолучитьКоличествоЦикловОжиданияЛицензииПоУмолчанию();
Пока КоличествоЦикловОжиданияЛицензии >= 0 Цикл
Попытка

Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь);
Прервать;

Иначе
Исключение

// проверим текст ошибки, если текст содержит информацию о необходимости конвертировать
// тогда выполним конвертацию и повторно попытаемся загрузить файл
ТекстОшибки = ВРег(Конфигуратор.ВыводКоманды());
Если Найти(ТекстОшибки, Врег("Структура конфигурации несовместима с текущей версией программы")) Тогда

Конфигуратор.СконвертироватьФайлКонфигурации(ФайлКонфигурации);
Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь);
Прервать;

ИначеЕсли Найти(ТекстОшибки, Врег("Не обнаружено свободной лицензии!")) Тогда
Лог.Ошибка(ТекстОшибки);
Лог.Информация("Повторное подключение через 10сек. Осталось попыток: " + КоличествоЦикловОжиданияЛицензии);
Приостановить(10000);

ВызватьИсключение ТекстОшибки;
Иначе

ВызватьИсключение ТекстОшибки;

КонецЕсли;

КонецПопытки;

Если ПолучитьКоличествоЦикловОжиданияЛицензииПоУмолчанию() <> 0 Тогда
КоличествоЦикловОжиданияЛицензии = КоличествоЦикловОжиданияЛицензии - 1;
КонецЕсли;

КонецПопытки;
КонецЦикла;

Если Не (Новый Файл(КаталогПлоскойВыгрузки).Существует()) Тогда
СоздатьКаталог(КаталогПлоскойВыгрузки);
Expand Down Expand Up @@ -955,11 +970,11 @@
КонецЕсли;

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

РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат);
Лог.Отладка("Фиксируем в файле VERSION версию " + СледующаяВерсия);
ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия);
ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия);
ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата);
СчетчикКоммитов = СчетчикКоммитов + 1;

Expand Down Expand Up @@ -1404,10 +1419,20 @@
Возврат ?(ДоменПочтыДляGitПоУмолчанию = Неопределено, "localhost", ДоменПочтыДляGitПоУмолчанию);
КонецФункции

Процедура УстановитьКоличествоЦикловОжиданияЛицензииПоУмолчанию(КоличествоЦиклов) Экспорт
КоличествоЦикловОжиданияЛицензииПоУмолчанию = КоличествоЦиклов;
КонецПроцедуры

Функция ПолучитьКоличествоЦикловОжиданияЛицензииПоУмолчанию() Экспорт
Возврат КоличествоЦикловОжиданияЛицензииПоУмолчанию;
КонецФункции


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

Лог = Логирование.ПолучитьЛог("oscript.app.gitsync");
ДоменПочтыДляGitПоУмолчанию = "localhost";
УдалятьВременныеФайлы=Ложь;
УдалятьВременныеФайлы = Ложь;
КоличествоЦикловОжиданияЛицензииПоУмолчанию = 1;
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
Лог = ДополнительныеПараметры.Лог;
Распаковщик = ПолучитьРаспаковщик(ДополнительныеПараметры);
Распаковщик.ДоменПочтыДляGitПоУмолчанию = ПараметрыЗапуска["-email"];

КоличествоЦикловОжиданияЛицензии = ПараметрыЗапуска["-amount-look-for-license"];
Если КоличествоЦикловОжиданияЛицензии = Неопределено Тогда
КоличествоЦикловОжиданияЛицензии = 1;
КонецЕсли;
Распаковщик.УстановитьКоличествоЦикловОжиданияЛицензииПоУмолчанию(Число(КоличествоЦикловОжиданияЛицензии));

Возврат Распаковщик;

КонецФункции // ПолучитьИНастроитьРаспаковщик
Expand Down