Описание
При одновременном использовании -l/--limit и --maxversion плагин limit берёт максимум из двух границ вместо минимума. В результате --maxversion не ограничивает выгрузку — лимит её расширяет.
Воспроизведение
gitsync 3.8.0, gitsync-plugins 1.6.1, платформа 8.3.27.1989.
Синхронизировано 1974, последняя версия в хранилище 1985.
gitsync sync -l 10 --maxversion 1982 --error-comment --push --push-tags <storage> ./src/cf
Лог:
ИНФОРМАЦИЯ - Установлен лимит <10> для количества версий, при выгрузке
ИНФОРМАЦИЯ - Установлена конечная версия <1982> при выгрузке версий
...
ИНФОРМАЦИЯ - Получаем исходники для версии 1983
КРИТИЧНАЯОШИБКА - Версия <1984> от автора <...>: комментарий не задан
Ожидалось: выгрузка останавливается на 1982.
Фактически: дошла до 1983 и упала на проверке версии 1984.
Причина
src/Классы/limit.os:
Если КонечнаяВерсия = 0 Тогда
КонечнаяВерсия = НомерВерсииСогласноЛимита;
Иначе
КонечнаяВерсия = ?(КонечнаяВерсия >= НомерВерсииСогласноЛимита, КонечнаяВерсия, НомерВерсииСогласноЛимита);
КонецЕсли
При лимите 10 от версии 1974 НомерВерсииСогласноЛимита = 1984; условие 1982 >= 1984 ложно, поэтому конечной версией становится 1984.
Ожидаемое поведение
Оба параметра — ограничения сверху, поэтому естественно брать минимум: Мин(КонечнаяВерсия, НомерВерсииСогласноЛимита).
Сейчас поведение неочевидно: в справке оба параметра описаны независимо, и в логе честно печатается «Установлена конечная версия <1982>», хотя фактически применяется 1984.
Обходной путь
Не использовать -l вместе с --maxversion.
Описание
При одновременном использовании
-l/--limitи--maxversionплагинlimitберёт максимум из двух границ вместо минимума. В результате--maxversionне ограничивает выгрузку — лимит её расширяет.Воспроизведение
gitsync 3.8.0, gitsync-plugins 1.6.1, платформа 8.3.27.1989.
Синхронизировано 1974, последняя версия в хранилище 1985.
Лог:
Ожидалось: выгрузка останавливается на 1982.
Фактически: дошла до 1983 и упала на проверке версии 1984.
Причина
src/Классы/limit.os:При лимите 10 от версии 1974
НомерВерсииСогласноЛимита= 1984; условие1982 >= 1984ложно, поэтому конечной версией становится 1984.Ожидаемое поведение
Оба параметра — ограничения сверху, поэтому естественно брать минимум:
Мин(КонечнаяВерсия, НомерВерсииСогласноЛимита).Сейчас поведение неочевидно: в справке оба параметра описаны независимо, и в логе честно печатается «Установлена конечная версия <1982>», хотя фактически применяется 1984.
Обходной путь
Не использовать
-lвместе с--maxversion.