From ef8920cb26a49996ae22638c2b162d8f3b3f4c98 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 25 Sep 2025 11:38:11 +0000 Subject: [PATCH] Update --- scripts/stash.sh | 51 +++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/scripts/stash.sh b/scripts/stash.sh index 3d2c929..1b36010 100755 --- a/scripts/stash.sh +++ b/scripts/stash.sh @@ -7,9 +7,6 @@ # Aktuellen Branch ermitteln CURRENT_BRANCH=$(git branch --show-current) -# =============================== -# Auswahl: Stash anlegen, laden oder löschen -# =============================== echo "Was möchtest du tun?" echo "1) Neuen Stash anlegen (aktueller Branch: $CURRENT_BRANCH)" echo "2) Vorhandenen Stash anwenden (nur aktueller Branch)" @@ -19,9 +16,7 @@ read -p "Wähle eine Option (1-3): " ACTION case "$ACTION" in 1) - # ------------------------------- # Neuer Stash (inkl. untracked Dateien) - # ------------------------------- read -p "Gib einen eigenen Namen für den Stash ein: " CUSTOM_NAME if [[ -z "$CUSTOM_NAME" ]]; then CUSTOM_NAME="WIP-$(date +%Y%m%d%H%M%S)" @@ -29,16 +24,14 @@ case "$ACTION" in STASH_NAME="${CURRENT_BRANCH} - ${CUSTOM_NAME}" git stash push -u -m "$STASH_NAME" - echo "Änderungen (inkl. untracked files) erfolgreich gestasht unter dem Namen: '$STASH_NAME'" + echo "Änderungen erfolgreich gestasht unter dem Namen: '$STASH_NAME'" git stash list | grep "On $CURRENT_BRANCH" ;; 2) - # ------------------------------- - # Vorhandenen Stash anwenden - # ------------------------------- + # Stash anwenden echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':" - BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH" | cut -d: -f1)) - + BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH")) + if [[ ${#BRANCH_STASHES[@]} -eq 0 ]]; then echo "Keine Stashes für diesen Branch vorhanden." exit 0 @@ -46,11 +39,13 @@ case "$ACTION" in i=1 declare -A STASH_MAP - for s in "${BRANCH_STASHES[@]}"; do - echo "$i) $s" - STASH_MAP[$i]=$s + while read -r line; do + STASH_ID=$(echo "$line" | cut -d: -f1) + STASH_MSG=$(echo "$line" | cut -d: -f3- | sed 's/^ //') + echo "$i) $STASH_ID -> $STASH_MSG" + STASH_MAP[$i]=$STASH_ID ((i++)) - done + done < <(git stash list | grep "On $CURRENT_BRANCH") read -p "Gib die Nummer des Stashs ein, den du anwenden möchtest: " STASH_CHOICE if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then @@ -62,25 +57,23 @@ case "$ACTION" in echo "Stash ${STASH_MAP[$STASH_CHOICE]} angewendet." ;; 3) - # ------------------------------- - # Vorhandenen Stash löschen - # ------------------------------- + # Stash löschen echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':" - BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH" | cut -d: -f1)) - - if [[ ${#BRANCH_STASHES[@]} -eq 0 ]]; then + i=1 + declare -A STASH_MAP + while read -r line; do + STASH_ID=$(echo "$line" | cut -d: -f1) + STASH_MSG=$(echo "$line" | cut -d: -f3- | sed 's/^ //') + echo "$i) $STASH_ID -> $STASH_MSG" + STASH_MAP[$i]=$STASH_ID + ((i++)) + done < <(git stash list | grep "On $CURRENT_BRANCH") + + if [[ $i -eq 1 ]]; then echo "Keine Stashes für diesen Branch vorhanden." exit 0 fi - i=1 - declare -A STASH_MAP - for s in "${BRANCH_STASHES[@]}"; do - echo "$i) $s" - STASH_MAP[$i]=$s - ((i++)) - done - read -p "Gib die Nummer des Stashs ein, den du löschen möchtest: " STASH_CHOICE if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then echo "Ungültige Auswahl!"