Документация по SEMVER (Semantic версий):
Согласно этой site версии чисел incrememented так:Цель руководства для обнаружения semver изменения за счет автоматизации
- мажорной версии, когда вы делаете несовместимые изменения API,
- Версия MINOR, когда вы добавляете функциональность в обратную совместимость, и
- Версия PATCH при исправлении ошибок, совместимых с обратной связью.
MAJOR.MINOR.PATCH.BUILD
Успение мне:
Я полагаю Рослин бы сделать это «просто» достаточно, чтобы создать требуемое программное обеспечение, если я понять концепцию достаточно хорошо :
- только изменения в частные/внутренние член: PATCH/BUILD приращение
- дополнительных общественные/защищенные/защищенные внутренние членов и изменения в частный/в тренние Участники: МАЛЫЙ incremement
- ранее существовавшие общественные/защищенные/защищенные внутренние элементы имеют измененную подпись или удалены: Крупное приращение
Объяснения почему вопрос изменился:
Первоначально я хотел узнать, есть ли способ обнаружения смены semver по сравнению со старым состоянием проекта (с использованием некоторого потенциально уже существующего программного обеспечения).
Однако ответы/комментарии вызвали некоторые конфликты, с которыми я мог бы воспользоваться, прежде чем писать программное обеспечение самостоятельно.
Вопрос:
ли semver используется для указания изменений на поведенческом или апи уровне?
Я хочу разрешить конфликт этой концепции, потому что необходимо иметь рабочие зависимости между пакетами.
Моя концепция в том, что она должна быть использована на уровне апи в основном по следующим причинам:
- Представьте, что у вас версия 2.0.1 что-то.
- Вы исправить некоторые ошибки в содержании частного метода -> 2.0.2
- Вы исправить некоторые ошибки и расширить свой API каким-либо общедоступный метод -> 2.1.0
- Вы исправить некоторые ошибки и удалять устаревшие методы -> 3.0.0
- Вы исправить некоторые ошибки -> 3.0.1
И это, где мой конфликт с каким-то semver мнения возникает (поведенческий против апите точки зрения).
Представьте, что кто-то ожидает некоторую поведенческую импликацию ошибки. Исправлена ошибка в 3.0.1.
- С точки зрения API ваш следующий шаг будет 3.0.2
- От «клиент», который построен на вершине своей ошибки ваш следующий шаг будет 4.0.0 (потому что он expectes его работать так)
С точки зрения nuget 4.0.0 было бы чушь. Ваш api не изменился - вы исправили ошибку, и он может обновляться без сбоев/сбоев зависимостей.
Как разработчик компонента вы можете не знать о том, что кто-то обрабатывает небольшую ошибку, как предполагалось, поэтому вы увеличиваете версию PATCH.
- Если вы выбираете 3.0.2 Исправлена ошибка будет решена, никаких зависимости не сломаются
- Если вы выбираете 4.0.0 людей, которые имели ошибку не может обновить без причины (потому что их NuGet установлен сделать только незначительные обновления), несмотря на то, что ваш API полностью совместим с обратной связью.
Разное:
- Я знаю, что это будет возможно за счет тщательного отслеживания. Однако я предпочитаю автоматизированные процессы, где требуются точные результаты.
- Не стесняйтесь исправлять меня по моим предположениям.
Вы можете изменить поведенческие нарушения без фактического изменения API, поэтому такое решение не будет надежным. Но простое сравнение поверхности API было бы довольно легко сделать, используя некоторое отражение. –