103 lines
3.1 KiB
Bash
Executable File
103 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
echo "===== TWORZENIE NOWEJ GAŁĘZI ====="
|
||
|
||
# ────────────────────────────────────────────────
|
||
# Najpierw zbieramy wszystkie odpowiedzi od użytkownika
|
||
# ────────────────────────────────────────────────
|
||
|
||
echo ""
|
||
echo "Jakiego typu zmiana?"
|
||
echo " 1 = fix (poprawka błędu)"
|
||
echo " 2 = feat (nowa funkcjonalność)"
|
||
echo " 3 = refactor (poprawa kodu bez zmiany zachowania)"
|
||
echo " 4 = docs (dokumentacja)"
|
||
echo " 5 = inne (wpisz własną prefiksa)"
|
||
echo -n "Wybierz numer (Enter = fix): "
|
||
|
||
read -r choice
|
||
|
||
case "$choice" in
|
||
1|"") PREFIX="fix" ;;
|
||
2) PREFIX="feat" ;;
|
||
3) PREFIX="refactor" ;;
|
||
4) PREFIX="docs" ;;
|
||
5) echo -n "Wpisz własny prefix (np. chore, test, style): "
|
||
read -r PREFIX ;;
|
||
*) PREFIX="$choice" ;;
|
||
esac
|
||
|
||
echo -n "Krótki opis zmiany (bez spacji, myślniki zamiast spacji): "
|
||
read -r DESC
|
||
|
||
if [ -z "$DESC" ]; then
|
||
echo "❌ Opis nie może być pusty!"
|
||
exit 1
|
||
fi
|
||
|
||
# Czyszczenie opisu
|
||
DESC=$(echo "$DESC" | tr '[:upper:]' '[:lower:]' | tr -s ' ' '-' | tr -cd '[:alnum:]-')
|
||
|
||
PROPOSED_BRANCH="${PREFIX}-${DESC}"
|
||
|
||
echo ""
|
||
echo "Proponowana nazwa gałęzi: ${PROPOSED_BRANCH}"
|
||
echo -n "Zatwierdzasz? [T/n]: "
|
||
read -r confirm
|
||
|
||
if [[ "$confirm" =~ ^[Nn]$ ]]; then
|
||
echo -n "Wpisz własną nazwę gałęzi: "
|
||
read -r BRANCH
|
||
if [ -z "$BRANCH" ]; then
|
||
echo "❌ Anulowano."
|
||
exit 1
|
||
fi
|
||
else
|
||
BRANCH="${PROPOSED_BRANCH}"
|
||
fi
|
||
|
||
# ────────────────────────────────────────────────
|
||
# Teraz dopiero zaczynamy operacje git
|
||
# ────────────────────────────────────────────────
|
||
|
||
echo ""
|
||
echo "Przygotowuję main..."
|
||
|
||
# Zapisujemy ewentualne niezacommitowane zmiany
|
||
echo "→ Zapisuję bieżące niezacommitowane zmiany (stash)..."
|
||
git stash push -m "automatyczny stash przed git-start $(date '+%Y-%m-%d %H:%M')" || true
|
||
|
||
# Przełączamy się na main
|
||
git checkout main 2>/dev/null || { echo "❌ Nie udało się przełączyć na main"; exit 1; }
|
||
|
||
# Aktualizujemy main
|
||
echo "→ Pobieram najnowszy main..."
|
||
git pull origin main
|
||
|
||
if [ $? -ne 0 ]; then
|
||
echo "❌ Błąd podczas git pull. Sprawdź połączenie / uprawnienia."
|
||
# Przywracamy stash jeśli był
|
||
git stash pop || true
|
||
exit 1
|
||
fi
|
||
|
||
# Przywracamy ewentualne zmiany użytkownika na czystym mainie
|
||
echo "→ Przywracam Twoje zmiany (jeśli były schowane)..."
|
||
git stash pop || echo "Nie było schowanych zmian – OK"
|
||
|
||
# Tworzymy nową gałąź
|
||
echo "→ Tworzę gałąź: $BRANCH"
|
||
git checkout -b "$BRANCH"
|
||
|
||
if [ $? -ne 0 ]; then
|
||
echo "❌ Błąd – gałąź $BRANCH prawdopodobnie już istnieje."
|
||
git branch
|
||
# Przywracamy stan sprzed próby (opcjonalnie)
|
||
git checkout main
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
echo "✅ Jesteś teraz na gałęzi: $BRANCH"
|
||
echo "Po skończeniu pracy uruchom: ./git-done.sh"
|