From: Jeff King Date: Tue, 06 Sep 2016 04:07:39 GMT Subject: Re: 2.10.0: multiple versionsort.prereleasesuffix buggy? Message-ID: <20160906040739.37otpk3l2wt7qfbb@sigill.intra.peff.net> In-Reply-To: <20160906010759.14883-1-szeder@ira.uka.de> On Tue, Sep 06, 2016 at 03:07:59AM +0200, SZEDER Gábor wrote: > > 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). Oh, right, that makes sense. So it's effectively not finding _any_ suffix between X-RC1 and X-beta-1, because we only start looking after "X-", and none of them match. I am still confused why "2.6.0-beta-1" doesn't get sorted with its peers. I'd guess that the comparison function doesn't actually provide a strict ordering, so the results depend on the actual sort algorithm, and which pairs it ends up comparing. -Peff