On Wednesday, 22 January 2014 at 08:25:05 UTC, Jordi Sayol wrote:
El 22/01/14 02:06, Andrew Edwards ha escrit:
On 1/21/14, 6:02 PM, Jordi Sayol wrote:
El 21/01/14 23:29, Brad Anderson ha escrit:
     #.###.~b#  ==> 2.065.b1  // beta
     #.###.~rc# ==> 2.065.rc1 // release candidate
     #.###.0   ==> 2.065.0   // initial release
     #.###.#   ==> 2.065.1   // hotfix

On Debian, "2.065.rc1" is bigger than "2.065.0", so if "dmd_2.065.rc1-0_amd64.deb" is installed and you try to upgrade to "dmd_2.065.0-0_amd64.deb", system will answer something like "You have installed a newer version".

No problem if these deb packages are for internal use and test, but not for a public download.

$ dpkg --compare-versions "2.065.0" gt "2.065.rc1" && echo "Bigger" || echo "Not bigger"

Apparently the same problem exists on FreeBSD. The first solution that comes to mind is to prefix the qualifiers for betas and release candidates with a tilde. As such:




This solution works on both Ubuntu and FreeBSD but I'm not sure it is the right one. Suggestions are welcomed.

I prefer:


because "2.65.0" and "2.65" are bigger than "2.65~rc1", regardless if "qualifier" number is present or not in final release version.

I think that, as much as possible, we should use exactly the same version string for all installers, zip, deb, rpm, dmg, etc. So if there is no problem on OSX, Windows, etc. I propose this versioning scheme:

#.#~b#  ==> 2.65~b1  // beta
#.#~rc# ==> 2.65~rc1 // release candidate
#.#.#   ==> 2.65.0   // initial release
#.#.#   ==> 2.65.1   // hotfix

I do not like the tilda scheme above. Because it does not conform to the major.minor.micro-qualifier scheme.

Before I propose another scheme, let me list some assumptions:

1) We will never have more than 3 release candidates.
2) Same goes for betas. You rarely see more than two beta releases for certain upcoming release of a product.

Therefore I propose the following (if it is "compatible" with FreeBSD and Debian) simple solution. We simply move beta and rc into the "qualifier".

So, we have:
2.065.0 (release)
2.065.0-rc2 (release candidate)
2.065.0-b1 (beta one)

This makes more sense IMHO.

Kind regards

Reply via email to