> On Tue, Sep 06, 2016 at 01:42:28AM +0300, Leho Kraav (Conversion Ready) wrote: > > > Here's the testing tree https://github.com/woothemes/woocommerce > > > > .git/config has: > > > > [versionsort] > > > > > > prereleasesuffix = -beta > > prereleasesuffix = -RC > > > > $ git tag -l --sort=version:refname > > [...] > > 2.6.0-RC1 > > 2.6.0-RC2 > > 2.6.0-beta-1 > > 2.6.0-beta-2 > > 2.6.0-beta-3 > > 2.6.0-beta-4 > > So that seems wrong. Even weirder, if I set _only_ "-beta", I get: > > $ git tag -l --sort=version:refname | grep -v ^2.6.0 > 2.6.0-beta-2 > 2.6.0-beta-3 > 2.6.0-beta-4 > 2.6.0 > 2.6.0-RC1 > 2.6.0-RC2 > 2.6.0-beta-1 > > Umm...what? beta-1 is sorted away from its companions? That's weird. > > I wondered if the presence of "-" after the suffix ("beta-1" rather than > "beta1") would matter. It looks like that shouldn't matter, though; it's > purely doing a prefix match on "do these names differ at a prerelease > suffix". > > But something certainly seems wrong. Some of the weirdness is caused by the '-' at the _beginning_ of the suffixes, because versioncmp() gets confused by suffixes starting with the same character(s). versioncmp() consumes two tagnames up to the first different character and then calls swap_prereleases() to try to match prerelease suffixes starting at those characters. This works fine when comparing a release with a prerelease, e.g. "2.6.0" and "2.6.0-RC1", because swap_prereleases() gets "" and "-RC1" and the latter does match one of the configured suffixes. However, when comparing two prereleases, e.g. "2.6.0-beta1" and "2.6.0-RC1", then the '-' is consumed from both tagnames because the first differing characters are 'b' and 'R', thus swap_prereleases() gets "beta1" and "RC1", which, of course, don't match any of the configured suffixes without the leading '-'. It's way past my bedtime, so for the time being I can only come up with a hacky configuration workaround that seems to deliver the expected results: [versionsort] prereleasesuffix = beta prereleasesuffix = -beta prereleasesuffix = RC prereleasesuffix = -RC Best, Gábor