Tweak version-at-commit.sh for interim releases (X.Y.Z.A)
authorPeter Amstutz <peter.amstutz@curii.com>
Thu, 3 Jun 2021 16:03:02 +0000 (12:03 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Thu, 3 Jun 2021 16:04:19 +0000 (12:04 -0400)
Assign correct intended dev version when there is a X.Y.Z.A tag (not
just X.Y.Z) in the history.

As of this writing we don't have tags like that in the arvados repo,
but we do have tags like that in the workbench2 repo, so this commit
is just about synchronizing the script for consistency between the two
repos.

refs #17512

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

build/version-at-commit.sh

index 53687dafec9fbd883c660e753d4800366cf522a4..fc60d53e0f20870b355aacd359ec3e3b99ed6a21 100755 (executable)
@@ -37,12 +37,12 @@ else
     merge_base=$(git merge-base origin/master "$commit")
 
     if git merge-base --is-ancestor "$nearest_tag" "$merge_base" ; then
-        # x.(y+1).0.devTIMESTAMP, where x.y.z is the newest version that does not contain $commit
+        # x.(y+1).0~devTIMESTAMP, where x.y.z is the newest version that does not contain $commit
        # grep reads the list of tags (-f) that contain $commit and filters them out (-v)
        # this prevents a newer tag from retroactively changing the versions of everything before it
-        v=$(git tag | grep -vFf <(git tag --contains "$commit") | sort -Vr | head -n1 | perl -pe 's/\.(\d+)\.\d+/".".($1+1).".0"/e')
+        v=$(git tag | grep -vFf <(git tag --contains "$commit") | sort -Vr | head -n1 | perl -pe 's/(\d+)\.(\d+)\.\d+.*/"$1.".($2+1).".0"/e')
     else
-        # x.y.(z+1).devTIMESTAMP, where x.y.z is the latest released ancestor of $commit
+        # x.y.(z+1)~devTIMESTAMP, where x.y.z is the latest released ancestor of $commit
         v=$(echo $nearest_tag | perl -pe 's/(\d+)$/$1+1/e')
     fi
     isodate=$(TZ=UTC git log -n1 --format=%cd --date=iso "$commit")