Skip to content

limit: --maxversion не ограничивает выгрузку, если одновременно задан -l/--limit #130

Description

@igostv

Описание

При одновременном использовании -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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions