> 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