Все примеры семантического управления версиями, которые я видел, показывают 3 используемых компонента. Не более 2 символов периода. В $DAYJOB
наших выпусках мы используем 4 компонента:
5.0.1.2
Позволяет ли это семантическое управление версиями?
И как вопрос более высокого уровня и более спорный, действительно ли это имеет значение? Я начал думать, что было бы неплохо реализовать семантическое управление версиями, но в конечном итоге такие объекты, как PCI, переопределяют его.
Я должен был уточнить мой комментарий PCI. Проблема заключается в том, что аудит и их стоимость влияют на изменение основных и второстепенных компонентов, что не обязательно является новой функцией. Например, если введена функция, связанная с платежами, мы добавим дополнительный номер для PCI. Но если мы добавим новую функцию, связанную с чем-то в графическом интерфейсе, это не так. Меняется только патч. Так что в этом случае мы, как разработчики, не имеем права голоса в этом вопросе, поскольку кто-то другой принимает эти решения.
источник
MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD
, В основном нам разрешено менять только 3-й и 4-й компоненты без вовлечения PCI (и впоследствии PCI-оверлордов в компании). Мне кажется, что это немного надумано, я не уверен, что они оправданы в том, как они управляют номером версии, но я не знаю достаточно о PCI и процессе аудита, чтобы сказать иначе.Ответы:
Похоже, что вы обходите обычные соглашения, просто чтобы избежать накладных расходов процесса / аудита. Это ... поразительно для меня.
То, что вы делаете, - это фактически намеренно создаете дополнительный номер версии (ваш младший номер PCI) для того, чтобы переместить вашу функцию / вспомогательные номера версий обратно на место, чтобы больше не запускать критерии внутреннего аудита.
В любом случае, переходя к вашему вопросу о семантическом версионировании, спецификация для семантического версионирования гласит:
Акцент мой.
Итак, вопрос в том, используете ли вы четвертый символ для метаданных перед выпуском / сборкой? Или это в основном еще одна версия версии, которую вы выпускаете?
Если «да», то спецификация семантического управления версиями допускает это. Если «нет», то вы технически не придерживаетесь семантического контроля версий.
Хотите ли вы строго следовать ему или нет - это решение, которое вы и ваша команда должны принять. Цель семантического управления версиями - помочь с совместимостью API:
Это система, которая помогает прояснить ситуацию, когда управление версиями влияет на нижестоящих пользователей API.
До тех пор, пока ваш API так же понятен, то, какой путь вы выберете, не так уж важно. Семантическое управление версиями оказывается простым, например, если я использую 3.4.2 и мне нужно перейти на 3.4.10, я знаю, что могу сделать это, ничего не нарушая. Если новая версия 3.5.1, я знаю, что она обратно совместима. И я знаю, что версия 4.0.1 будет серьезным изменением.
Это все часть того, что означают номера версий.
Хорошо это нормально У вас есть система, которая работает для вас и отвечает вашим потребностям. В этом смысл версий.
Если ваш API является закрытым (только внутренним), то на самом деле не имеет значения, как вы работаете с версией, если это имеет смысл для вас и всех, кто его использует. Версионность в стандартном формате имеет значение, когда у вас есть много других потребителей вашего API, которые должны знать, "что означает эта версия?"
Наличие произвольной системы управления версиями приведет в замешательство людей, которые привыкли к другим системам, таким как семантическое управление версиями. Но если никто не использует вашу систему управления версиями, кроме людей, которые ее создают - это не имеет значения.
источник
В текущей версии Semantic Versioning, которая является 2.0.0 , нет. Существует требование, определяющее версию как форму XYZ, где X, Y и Z являются неотрицательными целыми числами, которые не содержат ведущих нулей:
Однако возможность добавлять метаданные разрешена для:
Однако важно отметить, что семантическое управление версиями специально для программного обеспечения, которое объявляет общедоступный API:
Это имеет тенденцию поддерживать развитие библиотек или служб, а не на уровне приложений.
Важно учитывать, что означают номера ваших версий, как для внутреннего, так и для внешнего использования. Версии - это просто идентификаторы, которые позволяют вам говорить о различиях в программном обеспечении в два разных момента времени. Семантическое управление версиями - это один из методов наложения правил, поэтому, если вы знаете, что приложение использует семантическое управление версиями, вы можете легче определить уровень усилий, необходимых для обновления ваших пакетов. Следовать общему стандарту может быть хорошо, но если вы не можете по какой-либо причине, документирование правил для ваших пользователей также должно быть достаточным.
источник