SZEDER Gábor <szeder.dev@xxxxxxxxx> writes: > The 'versionsort.prereleaseSuffix' configuration variable, as its name > suggests, is supposed to only deal with tagnames with prerelease > suffixes, and allows sorting those prerelease tags in a user-defined > order before the suffixless main release tag, instead of sorting them > simply lexicographically. > > However, the previous changes in this series resulted in an > interesting and useful property of version sort: > > - The empty string as a configured suffix matches all tagnames, > including tagnames without any suffix, but > > - tagnames containing a "real" configured suffix are still ordered > according to that real suffix, because any longer suffix takes > precedence over the empty string. > > Exploiting this property we can easily generalize suffix reordering > and specify the order of tags with given suffixes not only before but > even after a main release tag by using the empty suffix to denote the > position of the main release tag, without any algorithm changes: > > $ git -c versionsort.prereleaseSuffix=-alpha \ > -c versionsort.prereleaseSuffix=-beta \ > -c versionsort.prereleaseSuffix="" \ > -c versionsort.prereleaseSuffix=-gamma \ > -c versionsort.prereleaseSuffix=-delta \ > tag -l --sort=version:refname 'v3.0*' > v3.0-alpha1 > v3.0-beta1 > v3.0 > v3.0-gamma1 > v3.0-delta1 > > Since 'versionsort.prereleaseSuffix' is not a fitting name for a > configuration variable to control this more general suffix reordering, > introduce the new variable 'versionsort.suffix'. Still keep the old > configuration variable name as a deprecated alias, though, to avoid > suddenly breaking setups already using it. Ignore the old variable if > both old and new configuration variables are set, but emit a warning > so users will be aware of it and can fix their configuration. Extend > the documentation to describe and add a test to check this more > general behavior. > > Note: since the empty suffix matches all tagnames, tagnames with > suffixes not included in the configuration are listed together with > the suffixless main release tag, ordered lexicographically right after > that, i.e. before tags with suffixes listed in the configuration > following the empty suffix. Thanks. Will comment on the individual patches later, but the end result looks very nice.