diff --git a/scripts/new-feature.sh b/scripts/new-feature.sh new file mode 100755 index 0000000..ced79b4 --- /dev/null +++ b/scripts/new-feature.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Skript: Neues Feature erstellen + +MASTER_BRANCH="master" + +# Abfrage Feature-Name +read -p "Bitte den Namen des neuen Features eingeben: " FEATURE_NAME + +# Falls nichts eingegeben wurde, Skript abbrechen +if [ -z "$FEATURE_NAME" ]; then + echo "❌ Fehler: Kein Feature-Name angegeben." + exit 1 +fi + +# Validierung: nur erlaubte Zeichen +if [[ "$FEATURE_NAME" =~ [^a-zA-Z0-9._-] ]]; then + echo "❌ Fehler: Ungültiger Branch-Name. Bitte nur Buchstaben, Zahlen, Punkt, Unterstrich oder Bindestrich verwenden." + exit 1 +fi + +FEATURE_BRANCH="feature/$FEATURE_NAME" + +# Check auf uncommittete Änderungen +if ! git diff-index --quiet HEAD --; then + echo "⚠️ Es gibt noch uncommittete Änderungen. Bitte committen oder stashen, bevor ein neuer Branch erstellt wird." + exit 1 +fi + +# Prüfen, ob Branch lokal schon existiert +if git show-ref --verify --quiet refs/heads/$FEATURE_BRANCH; then + echo "❌ Fehler: Der Branch '$FEATURE_BRANCH' existiert lokal bereits." + exit 1 +fi + +# Prüfen, ob Branch remote schon existiert +if git ls-remote --heads origin $FEATURE_BRANCH | grep -q $FEATURE_BRANCH; then + echo "❌ Fehler: Der Branch '$FEATURE_BRANCH' existiert bereits auf Remote." + exit 1 +fi + +# Auf master wechseln und aktualisieren +git checkout $MASTER_BRANCH +git pull origin $MASTER_BRANCH + +# Neuen Feature-Branch erstellen und auschecken +git checkout -b $FEATURE_BRANCH $MASTER_BRANCH + +# Branch auf Remote pushen +git push -u origin $FEATURE_BRANCH + +# Commit-Hash der Basis holen +BASE_COMMIT=$(git rev-parse --short HEAD) + +echo "✅ Neuer Feature-Branch '$FEATURE_BRANCH' wurde erstellt und auf Remote gepusht." +echo " Basis: $MASTER_BRANCH@$BASE_COMMIT"