What rules does software version numbering follow?

This question already has an answer here:

  • Code version change “rules”

    3 answers

  • Safely delete a TFS branch project
  • Using Git, what's the best way to subtree merge an external project that has submodules?
  • How do I setup a version control repository on a web hosting account?
  • How to convert a GIT repo to a submodule, which is nested in another (parent) GIT repo?
  • Rebasing a branch including all its children
  • How to overwrite several multi-level(different hierarchy) files from a local version to an online version via FTP
  • SCM choice for a new user?
  • How can I revert multiple Git commits (already pushed) to a published repository?
  • Tools for Maintaining Branches in SVN
  • Pull single file on server
  • How to push from one bare git repo to another?
  • Create User & Access Rules Github for Windows
  • 3 Solutions collect form web for “What rules does software version numbering follow?”

    The usual method I have seen is X.Y.Z, which generally corresponds to major.minor.patch:

    • Major version numbers change whenever there is some significant change being introduced. For example, a large or potentially backward-incompatible change to a software package.
    • Minor version numbers change when a new, minor feature is introduced or when a set of smaller features is rolled out.
    • Patch numbers change when a new build of the software is released to customers. This is normally for small bug-fixes or the like.

    Other variations use build numbers as an additional identifier. So you may have a large number for X.Y.Z.build if you have many revisions that are tested between releases. I use a couple of packages that are identified by year/month or year/release. Thus, a release in the month of September of 2010 might be 2010.9 or 2010.3 for the 3rd release of this year.

    There are many variants to versioning. It all boils down to personal preference.

    For the “1.3v1.1”, that may be two different internal products, something that would be a shared library / codebase that is rev’d differently from the main product; that may indicate version 1.3 for the main product, and version 1.1 of the internal library / package.

    You might find the Semantic Versioning Specification useful.

    Wikipedia has a pretty extensive answer that might be a good place to start

    Git Baby is a git and github fan, let's start git clone.