From 1e195a313cee4ac2aff6f1ba1e1169aa7b972a13 Mon Sep 17 00:00:00 2001 From: Menno van Leeuwen Date: Fri, 23 May 2025 15:24:09 +0200 Subject: [PATCH] Improve version tag fetching and handling in release script --- bin/scripts/release.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/bin/scripts/release.sh b/bin/scripts/release.sh index 6f0596c..7c90474 100755 --- a/bin/scripts/release.sh +++ b/bin/scripts/release.sh @@ -17,8 +17,21 @@ if ! git rev-parse --is-inside-work-tree &> /dev/null; then exit 1 fi -# Get the latest tag or default to v0.0.0 if no tags exist -LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") +# Fetch all tags first to ensure we have the latest +printfe "%s\n" "cyan" "Fetching all tags..." +log_and_run git fetch --tags + +# Get the latest version tag, excluding 'latest' tag, or default to v0.0.0 if no tags exist +VERSION_TAGS=$(git tag -l 'v*.*.*' | grep -v 'latest' | sort -V) +if [ -z "$VERSION_TAGS" ]; then + printfe "%s\n" "yellow" "No version tags found. Starting with v0.0.0." + LATEST_TAG="v0.0.0" +else + # Get the latest version tag + LATEST_TAG=$(echo "$VERSION_TAGS" | tail -n 1) + printfe "%s" "cyan" "Found latest version tag: " + printfe "%s\n" "yellow" "$LATEST_TAG" false +fi # Parse the version number if [[ $LATEST_TAG =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then @@ -56,8 +69,7 @@ printfe "%s" "cyan" "Creating and pushing tag: " printfe "%s\n" "yellow" "$NEXT_VERSION" false # Make sure we have the latest changes -printfe "%s\n" "cyan" "Fetching latest tags..." -log_and_run git fetch --tags +# We've already fetched tags at the beginning # Create the new tag printfe "%s\n" "cyan" "Creating new tag..."