Семантическое управление версиями для инструментов командной строки - PullRequest
0 голосов
/ 19 сентября 2018

Спецификации SemVer гласят, что при внесении несовместимых изменений API необходимо увеличить

  1. MAJOR,
  2. MINOR версию при добавлениифункциональность в обратно-совместимой манере и
  3. версия PATCH при выполнении обратно-совместимых исправлений ошибок.

Что является обратной совместимостью в случае команд-линейный интерфейс?

Упрощенный пример:

Существует инструмент командной строки, который анализирует числа в текстовом файле.Он вернет минимальное и максимальное значения.

Версия 1.0.0 работает следующим образом:

$ analyzertool numbers.txt
min: 12
max: 20

Теперь я добавлю полезную функцию.Теперь инструмент также выведет среднее значение:

$ analyzertool numbers.txt
min: 12
max: 20
avg: 17

Это ГЛАВНОЕ или МЕНЬШЕЕ изменение?Вывод явно изменился, но строки с min и max все еще присутствуют, поэтому кто-то, делающий

$ analyzertool numbers.txt | grep min
min: 12

, все равно увидит тот же вывод.

Яищу существующие соглашения или соответствующие примеры.

1 Ответ

0 голосов
/ 20 сентября 2018

В приведенном примере вы добавили функцию, но не сделали ее обратно совместимым способом.Вы изменили интерфейс, извергнув больше данных в ответе.Это похоже на изменение типа возвращаемых данных функции;это определенно ломается.Тот факт, что есть некоторые варианты использования, которые не будут нарушены, не меняет того факта, что есть другие, которые будут.

Если в документации не было четко указано, что дополнительные данные будут добавлены кпоток вывода по мере добавления функций, вы должны сделать основной выпуск версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...