[aur-general] Revise VCS packages versioning

Jan Alexander Steffens jan.steffens at gmail.com
Thu Oct 31 00:03:40 EDT 2013


On Thu, Oct 31, 2013 at 4:37 AM, Anatol Pomozov
<anatol.pomozov at gmail.com> wrote:
> Hi
>
> I would like to discuss VCS package versioning that is described here
> https://wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines
>
> I am looking at the -git packages but it also applicable to other VCS.
> Here is the suggested way to create the version
>
> local ver="$(git describe --tags)"
> echo "${ver//-/.}"
>
> so
> 0.7-19-ge4e6e20
> will turn into
> 0.7.19.ge4e6e20
>
> The problem is that the revision number (19 in this case) looks like
> 3rd component in the version. Now imagine upstream project releases
> version 0.7.1. The generated version becomes 0.7.1 (and then
> 0.7.1.1.gfoobar). With the new tag the generated version becomes
> smaller (0.7.1.1 < 0.7.19). That is the real problem that I had with
> tup-git package - upstream uses both 2 and 3 component versions.
>
> We should recommend a way that works this case. There is a discussion
> in the comments and the best recommendation is to use following
> recipe:
>
> git describe | sed -E 's/([^-]*-g)/r\1/;s/-/./g'
>
> The idea is to find the commit number and start it with "r"
> (revision). "r" is smaller than a number so it will help in our case.
>
> 0.7-19-ge4e6e20 => 0.7.r19.ge4e6e20
>
> Another issue is a repo that has no tags. Here is a recommendation
> from the wiki page:
>
> printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
>
> that will use number of commits (a large number e.g. 3000). The
> problem arises when the project creates first tag e.g. 0.1. I suggest
> to fix this problem by using "0" as a tag version (and add prefix 'r'
> like in the previous item). This makes sure that non-tagged version is
> always less that a tagged version.
>
> So pkgver() will look like:
>
> printf "0.r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
>
> Let me know if you have any objections. If not then I'll update the wiki page.

I would like to suggest using "+" as separator instead of ".", so you get:

0.7+r19+ge4e6e20
0+r3000+g1a2b3c4

For added distinction from the tag version. Reads like "version 0.7
plus 19 revisions."


More information about the aur-general mailing list