Skip to main content
74 votes
Accepted

When should a commit not be version tagged?

SemVer concerns versioning releases, not commits. If your version control model happens to require that every commit to master be a release, then yes, every commit will need to be tagged according to ...
Alex Reinking's user avatar
60 votes
Accepted

How should source code unit tests affect semantic versioning?

Your unit tests are not part of your public API. By definition, the API is a software interface that allows two or more systems, applications, programs, or components to communicate. The existence or ...
Thomas Owens's user avatar
  • 83.3k
34 votes
Accepted

Guidance on rectifying a minor bump that should have been a major bump

You are mixing two different version numbers here: The "Technical Version Number" and The "Marketing Version Number". Don't do that. Conflating those two version numbers is going ...
Jörg W Mittag's user avatar
33 votes
Accepted

What Semantic Version increment to use for a filename change?

I think myprogram needs to release 1.1.0 which supports the myprog alias. If the user invokes myprogram then it should present a notice/warning to the programmer that this name will be deprecated in ...
MonkeyZeus's user avatar
30 votes

How to change the semantic version number when reverting the last major change

Why you SHOULD go for a new major version according to semver? Semver is a recommendation and not a regulation: ultimately, it's up to you to decide, as suggested by Bart. However, if you want to ...
Christophe's user avatar
  • 78.4k
18 votes
Accepted

Semantic versioning with bugfixes and new features in the same release

Assuming that the new features are backward compatible, you should increment the MINOR version number, an reset the PATCH level, . Rationale: semver 2.0.0 makes this crystal clear in clause 7: ...
Christophe's user avatar
  • 78.4k
16 votes

How to change the semantic version number when reverting the last major change

Usually, for things like semantic versioning, it isn't relevant how you technically achieve something, but rather what the intent is of what you try to achieve. If your intent with the rollback of ...
Bart van Ingen Schenau's user avatar
16 votes

How should source code unit tests affect semantic versioning?

Unit tests provide examples for the semantics of an API, hence they can be seen as part of the API's documentation. So when a change in a unit test shows a change of the API's semantics, this can give ...
Doc Brown's user avatar
  • 209k
15 votes
Accepted

Is fast major version bumping an evidence of poor design?

Assuming that the semantic versioning is used properly, does this indicate that the system is poorly designed since it makes major breaking changes almost every four months? Not necessarily. You ...
Jörg W Mittag's user avatar
15 votes

What Semantic Version increment to use for a filename change?

Since this is a backward incompatible API change, you should bump to 2.0.0. Changing the name of a command line program is backward incompatible because the name is part of the API, and scripts and ...
JacquesB's user avatar
  • 59.8k
13 votes
Accepted

Semantic Versioning in OpenAPI with string "enum": new values OK?

It's my understanding that you have to increment the major version number if your code introduces breaking changes. If Thing is used strictly for input and you're now accepting a couple of new values,...
Dan Pichelman's user avatar
12 votes

Versioning Apps with SemVer

First of all, SemVer.org is all about version numbering for libraries and APIs. You can borrow the ideas to use for applications, but note that it's not a perfect fit (for example, SemVer says the ...
Dan Pichelman's user avatar
12 votes

When should a commit not be version tagged?

Version numbers are allocated to releases. In general not every commit should be a release. There are several reasons for this. Firstly while you say you "test" every commit there are levels of ...
Peter Green's user avatar
  • 2,251
12 votes

How do I choose a versioning scheme when Semantic Versioning (SemVer) isn't appropriate?

A version number is just a message, a way to relay specific information to a specific group of recipients. And just like any communication, the "best" message is the one that conveys the ...
Duroth's user avatar
  • 900
12 votes

Should modifying a hash function be considered a breaking change?

IMHO this depends on the guarantees and constraints described in the documentation (a.k.a "contract") of the hash function, which should exists when it is part of your custom's type public ...
Doc Brown's user avatar
  • 209k
11 votes
Accepted

In SemVer, am I allowed to change the in-practice behaviour of undefined behaviour usages

Non-contractual behavior is non-contractual. Strictly speaking, it thus isn't something to be concerned about at all, and should only bump the patch-number in SemVer. Unfortunately, some people ...
Deduplicator's user avatar
  • 9,071
10 votes

What Does Backwards Compatible Mean If There Are Breaking Changes

There are a couple of things which make backwards compatibility non-trivial. First, one constraint that is often used is that your code will compile without change in a backwards compatible change ...
Derek Elkins left SE's user avatar
10 votes
Accepted

What should be the version of the very first build of a software?

First build? 0.0.0.0. Because you are going to build and try your code many times before you reach the point you put a version on it. But now I'm going to stop nitpicking and assume you mean the ...
Idan Arye's user avatar
  • 12.1k
10 votes

Semantic Versioning

Semantic versioning doesn't apply exclusively to the build system or API interface. It also applies to what the software does and how it interacts with other things. If you make a change that breaks ...
whatsisname's user avatar
  • 27.6k
9 votes
Accepted

Semantic Version Change (to application) when Upgrading Libraries Involved

The semantic versioning rules are applied to your software from the perspective of your users. If your API has changed and is not backwards-compatible, you should update your major version number. It ...
Thomas Owens's user avatar
  • 83.3k
9 votes
Accepted

Keeping version parity between platforms

When most of your code base is shared for both platforms, I would avoid getting version numbers "out of sync", because it will bring a lot more effort for writing a coherent changelog or ...
Doc Brown's user avatar
  • 209k
8 votes
Accepted

Multiple git repositories with a common core lib

You can treat the shared code like code or like a package. If you treat it like code, then git submodules is the right answer. If you want to treat it like a package, you need to introduce package ...
antlersoft's user avatar
8 votes
Accepted

Why do developers love using code-names instead of actual version numbers?

why not use simple number based versioning? Android, as most of the software, has also semantic versioning. But, numbers are abstract and hard to sell. However, this does not happen only in the ...
Paul92's user avatar
  • 2,591
8 votes
Accepted

Is a breaking change bug fix a semver patch or a major?

The absolute first thing you should do is ensure your tests are improved, so that at least one fails with the current code and passes when it is corrected to how it should have worked. Next, if ...
David Arno's user avatar
  • 39.3k
8 votes
Accepted

Using Gitflow and Semantic Versioning: How to avoid version number conflicts when merging?

You cannot reasonably avoid this merge conflict. But it is a very minor conflict and easy to resolve during the merge – but make sure that the version number is only written in one source file. ...
amon's user avatar
  • 135k
8 votes

Semantic Versioning

Assuming that your changed function belongs to the public API, it appears that your new API version no longer provides the same result for the same input. This is definitely not backward compatible ...
Christophe's user avatar
  • 78.4k
8 votes
Accepted

What kind of version change is updating to a new .NET-version when using SemVer?

Unless the update to the .NET Framework would affect consumers of the package or its API, I would increment the patch version number when updating dependencies. Both the major and the minor version ...
Thomas Owens's user avatar
  • 83.3k
8 votes

What Semantic Version increment to use for a filename change?

The semantic versioning defines versioning rules solely in relation with the API, as it aims to facilitate the management of dependencies between packages. Regarding the command line you are in a grey ...
Christophe's user avatar
  • 78.4k
7 votes
Accepted

Update semver minor version on test updates?

I think you're overthinking it. Look at it from the perspective of the user of your package, upgrading. Is it safe for them to do with no code changes? Then bumping the 'z' version of x.y.z is ...
Daenyth's user avatar
  • 8,147
7 votes

Semantic versioning for desktop applications

Old post, but I was looking for a solution and stumbled upon this article of Brett Uglow (permalink) which is the best thing I have ever read about versioning applications which will be delivered ...
ferit's user avatar
  • 193

Only top scored, non community-wiki answers of a minimum length are eligible