#!/bin/sh

branch="$(git symbolic-ref --quiet --short HEAD 2>/dev/null || true)"

if [ "$branch" != "main" ]; then
    exit 0
fi

range=""
while read -r local_ref local_sha remote_ref remote_sha
do
    if [ -z "$local_ref" ]; then
        continue
    fi

    case "$remote_sha" in
        0000000000000000000000000000000000000000)
            current_range="$local_sha"
            ;;
        *)
            current_range="${remote_sha}..${local_sha}"
            ;;
    esac

    if [ -n "$range" ]; then
        range="$range $current_range"
    else
        range="$current_range"
    fi
done

if [ -z "$range" ]; then
    exit 0
fi

if git log --format=%s $range | grep -qi '^fix:'; then
    echo "Push blockiert: 'fix:'-Commits duerfen nicht direkt nach main gepusht werden." >&2
    echo "Bitte nutze einen separaten Branch und lasse den PR automatisch erstellen." >&2
    echo "" >&2
    echo "Naechste Schritte:" >&2
    echo "  git checkout -b fix/<kurze-beschreibung>" >&2
    echo "  git push -u origin fix/<kurze-beschreibung>" >&2
    echo "" >&2
    echo "Danach kannst du dein lokales main wieder angleichen:" >&2
    echo "  git checkout main" >&2
    echo "  git reset --hard origin/main" >&2
    exit 1
fi

exit 0
