Last call to make your voice heard! Our 2022 Developer Survey closes in less than a week. Take survey.
325 votes
Accepted

Maintain hundreds of customized branches over master branch

You are completely abusing branches! You should have the customisation powered by flexibility in your application, not flexibility in your version control (which, as you have discovered, is not ...
user avatar
94 votes

Maintain hundreds of customized branches over master branch

Having 500 clients is a nice problem, if you had spent the time up front to avoid this problem with branches, you may never have been able to remain trading for long enough to get any clients. ...
user avatar
  • 4,564
56 votes
Accepted

Why is build.number an "abuse" of semantic versioning?

Your build number won't be reset to 0, when minor and major versions increase, this violates sections 7 and 8 of the specs: Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards ...
user avatar
  • 3,172
40 votes

Maintain hundreds of customized branches over master branch

In the future, ask the Joel test questions in your interview. You'd be more likely not to walk into a trainwreck. This is an, ah, how shall we say... really, really bad problem to have. The "interest ...
user avatar
  • 12k
31 votes
Accepted

Is it good practice to store software version numbers in VCS?

Personally, I choose option 3: keep versioning information in VCS metadata, specifically, tags. Git makes it very easy to do so, because there is a command git describe, which can uniquely describe a ...
user avatar
29 votes
Accepted

Does Semantic Versioning allow 4 components in version numbers?

It sounds like you are bypassing normal conventions just to avoid process overhead/audits. That... strikes me as concerning. What you are doing is effectively making an extra version number (your ...
user avatar
  • 12k
27 votes
Accepted

When to add version numbers to documentation

This depends on how you plan which features go into which release. For example, if any feature that is merged during a certain timeframe will make it into the 2.4 release, then you can use that ...
user avatar
  • 123k
26 votes

What exactly is the build number in MAJOR.MINOR.BUILDNUMBER.REVISION

The whole confusion stems from the different semantics that MS uses for "Build number" and especially "Revision". The terms just mean different things. Most people (myself included) use a semantic ...
user avatar
  • 2,374
24 votes
Accepted

Version number as a part of a file name

It makes sense to specify the version you require. Behavior you may rely on could have changed, so newer is not always better. First, test whether a new version of a library works for you. Then, ...
user avatar
  • 123k
21 votes
Accepted

Event sourcing, replaying and versioning

First, it is important to understand and be able to leverage the difference between Commands and Events. As this question succinctly points out, Commands are things we would like to happen, and ...
user avatar
  • 648
17 votes

Maintain hundreds of customized branches over master branch

This is one of the worst anti-patterns you can hit with any VCS. The correct approach here is to turn the custom code into something driven by configuration, and then each customer can have their own ...
user avatar
  • 8,027
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 ...
user avatar
15 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: ...
user avatar
  • 66.9k
14 votes
Accepted

In SemVer should I increase the version on every commit/accepted pull request

While not being explicit about it, SemVer applies to released packages. Therefore, if you, as release manager, build a package containing all 3 commits then you only have to increment the version ...
user avatar
  • 2,884
13 votes

Maintain hundreds of customized branches over master branch

The purpose of branches is to explore one possible avenue of development without risking to break stability of the main branch. They should eventually be merged back at a suitable time, or be ...
user avatar
  • 29.8k
13 votes

Versioning REST APIs. Each API has its own version

What you call single REST APIs might be called REST API's particular set of resources or resources. You also could look at it as REST API's functionalities. Such as any kind of software, the whole ...
user avatar
  • 383
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 ...
user avatar
12 votes

Versioning REST APIs. Each API has its own version

Here's an even better approach: use content negotiation to version your API with the Content-Type and Accept headers: POST /api/accounts Accept: application/vnd.my-api.account.v1+json 201 Created ...
user avatar
  • 4,389
12 votes
Accepted

Binary data formats, how to make ensure you can read different format versions?

It seems to me that the simplest solution is to make your version header unambiguous and make sure that the old format can never look like it has a format header, you simply look for it. If it's not ...
user avatar
  • 22.1k
12 votes

Semantic versions/versions for web applications

What purpose will this version number for your web app server be? Have you asked yourself whether you even need a version number? As the consumer of a library, a version number is important, ...
user avatar
  • 38.1k
12 votes
Accepted

Is changing the exception a method throws a breaking change for a library?

Could these exceptions break users' code if they are using your package as the documentation describes? Or are these exceptions an unadvertised or specifically annotated implementation detail? If it's ...
user avatar
  • 244
11 votes

Are version numbers needed

You might want to have internal version numbers of your application to better manage your internal development processes. However, these numbers are of little use for the user. The usual purpose of ...
user avatar
  • 22.6k
11 votes

Is Git more useful for versioning binary files compared to versioning text files?

Git doesn't care about the contents of files. At all. It stores a directory tree*. That's it. It stores the names of directories and files, and their contents but without ever looking at the content. ...
user avatar
11 votes
Accepted

Avoid dependency version conflicts?

It's not your problem. It is up to your end user to resolve. It just comes with the territory of using third-party dependencies, and I've had to resolve dependency conflicts more times than I count. ...
user avatar
  • 9,007
10 votes

How to handle versioning with multiple independent pull requests in a Git repository?

Alice should handle this situation by rejecting the pull requests which also change the version number (both of them). Collaborators who are not the maintainer should not be changing the version ...
user avatar
  • 10.2k
10 votes

How to treat bugs that users thought were a feature?

I'd recommend making it more stable. Users are the canonical source of what your software does. If they want it, and have come to rely on it, I'd think twice about yanking it. A good example of this ...
user avatar
  • 1,046
9 votes
Accepted

How to handle versioning with multiple independent pull requests in a Git repository?

If Alice is the maintainer of the project, then Alice and Alice alone should be the one that increments the version. Increasing the version number means a release, and Alice is the one to decide when ...
user avatar
  • 11.8k
9 votes

Is it good practice to store software version numbers in VCS?

Yes. It is good practice to keep most of the version number in vcs. If we consider semantic versioning semver.org where we have major.minor.patch.build the first three must live in vcs. The last one ...
user avatar

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