The guidelines for snapshot versioning seem to implicitly assume that a snapshot is always post-release (0.4.1^20200601g01234ae) or post-pre-release (0.5.0~rc1^20200701gdeadf00f).
0.4.1^20200601g01234ae
0.5.0~rc1^20200701gdeadf00f
There are cases, however, where a snapshot really belongs to the development branch for a future release, but there has not been a formal pre-release. If the version number in the code has already been updated for the new release, then it is incorrect to treat the snapshot as a post-release of the old version; it is truly a pre-release snapshot.
Two possibilities I can think of in this case are:
~
^
Version
0.5.0~20220917g12345bf
0.5.0~^20220917g12345bf
The second is not explicitly disallowed by the current guidelines, but not clearly allowed either. The first is simpler. Tests with rpmdev-vercmp verify that both styles sort before any snapshot of a named pre-release, e.g. 0.5.0~rc1^20200701gdeadf00f—for the first style, assuming that the named pre-release begins with a letter—which seems like it would be a desirable property.
rpmdev-vercmp
I ran into this myself (although it ended up being moot) but I just remembered where else I saw this situation in practice. In https://bugzilla.redhat.com/show_bug.cgi?id=2098905#c14, @carlgeorge arrived at the conclusion that the second possibility is correct. (I agree that this seems to be the best interpretation of the extant guidelines.)
Another related case: https://src.fedoraproject.org/rpms/python-astroid/pull-request/7
Looking at the current docs, there seems to be a mistake, probably introduced when ^ based snapshot versioning was documented. It implicitly assumes that all snapshots are post-release snapshots, but for pre-release snapshots, the slightly older ~ based versioning should be used.
Log in to comment on this ticket.