Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5.10.2-3-g51926a7-dirty
7 changes: 7 additions & 0 deletions src/githooks/_post-checkout.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,10 @@ if test "$GIT_COMMAND" = "rebase"; then
zz_log s "Skip post-checkout hook during rebase."
exit 0
fi

# Update VERSION file with current GitVersion semver
if [ -f "./update-version.sh" ]; then
./update-version.sh || zz_log w "Failed to update VERSION file"
else
zz_log w "update-version.sh script not found, skipping VERSION file update"
fi
54 changes: 54 additions & 0 deletions update-version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/bin/bash
Copy link
Preview

Copilot AI Sep 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The script is missing the executable permission setting. Consider adding a comment about setting executable permissions or ensuring the file is created with proper permissions.

Suggested change
#!/bin/bash
#!/bin/bash
# Ensure this script is executable: chmod +x update-version.sh

Copilot uses AI. Check for mistakes.

# Script to update VERSION file with GitVersion semver
# This script handles both GitVersion tool and fallback scenarios

set -e

# Define the VERSION file path
VERSION_FILE="VERSION"

# Function to update VERSION file
update_version_file() {
local version="$1"
if [ -n "$version" ]; then
echo "$version" > "$VERSION_FILE"
echo "Updated VERSION file to: $version"
else
echo "Warning: Could not determine version"
fi
}

# Function to extract semver from git describe
extract_semver_from_describe() {
local describe_output="$1"
# Extract version from patterns like:
# feature_larasets_5.10.2-1-g97bdb34 -> 5.10.2-1-g97bdb34
# feature_larasets_5.10.2 -> 5.10.2
echo "$describe_output" | sed -E 's/^[^_]*_[^_]*_([0-9]+\.[0-9]+\.[0-9]+.*)/\1/' | head -1
Comment on lines +24 to +27
Copy link
Preview

Copilot AI Sep 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The regex pattern is complex and assumes a specific tag naming convention (feature_larasets_X.Y.Z). Consider adding a comment explaining the expected tag format or making the pattern more flexible to handle different tag naming conventions.

Suggested change
# Extract version from patterns like:
# feature_larasets_5.10.2-1-g97bdb34 -> 5.10.2-1-g97bdb34
# feature_larasets_5.10.2 -> 5.10.2
echo "$describe_output" | sed -E 's/^[^_]*_[^_]*_([0-9]+\.[0-9]+\.[0-9]+.*)/\1/' | head -1
# Extract version from tags ending with a semantic version, e.g.:
# feature_larasets_5.10.2-1-g97bdb34 -> 5.10.2-1-g97bdb34
# release_5.10.2 -> 5.10.2
# v5.10.2 -> 5.10.2
# The regex matches any tag ending with X.Y.Z (optionally with suffixes).
echo "$describe_output" | sed -E 's/.*[_v]([0-9]+\.[0-9]+\.[0-9]+([-a-zA-Z0-9\.]*)?)/\1/' | head -1

Copilot uses AI. Check for mistakes.

}

# Try GitVersion first (if available and working)
if command -v dotnet-gitversion >/dev/null 2>&1; then
# Try to get MajorMinorPatch from GitVersion
GITVERSION_OUTPUT=$(dotnet-gitversion -config .gitversion -showvariable MajorMinorPatch 2>/dev/null || echo "")
# Check if output is a valid version number (only digits and dots) and not default
if [ -n "$GITVERSION_OUTPUT" ] && echo "$GITVERSION_OUTPUT" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$' && [ "$GITVERSION_OUTPUT" != "1.0.0" ]; then
Copy link
Preview

Copilot AI Sep 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hardcoded exclusion of '1.0.0' as a default value may not be reliable if a project legitimately has version 1.0.0. Consider checking for GitVersion's actual error conditions or configuration instead of excluding specific version numbers.

Suggested change
if [ -n "$GITVERSION_OUTPUT" ] && echo "$GITVERSION_OUTPUT" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$' && [ "$GITVERSION_OUTPUT" != "1.0.0" ]; then
if [ -n "$GITVERSION_OUTPUT" ] && echo "$GITVERSION_OUTPUT" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then

Copilot uses AI. Check for mistakes.

update_version_file "$GITVERSION_OUTPUT"
exit 0
fi
fi

# Fallback to git describe
GIT_DESCRIBE=$(git describe --tags --always --dirty 2>/dev/null || echo "")
if [ -n "$GIT_DESCRIBE" ]; then
FALLBACK_VERSION=$(extract_semver_from_describe "$GIT_DESCRIBE")
update_version_file "$FALLBACK_VERSION"
exit 0
fi

# Final fallback - keep existing version or use default
if [ -f "$VERSION_FILE" ]; then
echo "Warning: Could not determine new version, keeping existing VERSION file"
else
update_version_file "1.0.0"
fi