#!/bin/sh # Nexus fork: enforce [nexus] prefix on all fork commits # Allows upstream merge commits and rebase-generated commits through MSG_FILE="$1" FIRST_LINE=$(head -1 "$MSG_FILE") # Skip merge commits (git generates these automatically during rebase/merge) if echo "$FIRST_LINE" | grep -qE "^Merge (branch|pull request|remote-tracking)"; then exit 0 fi # Skip fixup/squash commits (used during interactive rebase) if echo "$FIRST_LINE" | grep -qE "^(fixup|squash)!"; then exit 0 fi # Enforce [nexus] prefix if ! echo "$FIRST_LINE" | grep -qE "^\[nexus\]"; then echo "ERROR: Commit message must start with [nexus]" echo " Got: $FIRST_LINE" echo " Example: [nexus] feat: add branding package" exit 1 fi