gitbash 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/switch.sh +22 -4
- package/package.json +1 -1
package/commands/switch.sh
CHANGED
|
@@ -159,7 +159,7 @@ EOF
|
|
|
159
159
|
branches_file=$(mktemp)
|
|
160
160
|
printf '%s\n' "$branch_list" > "$branches_file"
|
|
161
161
|
|
|
162
|
-
# Create a small helper script to delete the selected branch safely.
|
|
162
|
+
# Create a small helper script to delete the selected branch safely (asks for confirmation).
|
|
163
163
|
delete_script=$(mktemp)
|
|
164
164
|
cat > "$delete_script" <<'DEL_SH'
|
|
165
165
|
#!/usr/bin/env bash
|
|
@@ -175,6 +175,24 @@ type="${line%%:*}"
|
|
|
175
175
|
branch="${line#*: }"
|
|
176
176
|
|
|
177
177
|
if [[ "$type" == "local" || "$type" == "merged" ]]; then
|
|
178
|
+
# Ask for confirmation via the terminal (/dev/tty). Default answer is Yes when empty.
|
|
179
|
+
while true; do
|
|
180
|
+
printf "Delete local branch '%s'? [Y/n]: " "$branch" > /dev/tty
|
|
181
|
+
read -r answer < /dev/tty
|
|
182
|
+
case "$answer" in
|
|
183
|
+
''|[yY]|[yY][eE][sS])
|
|
184
|
+
break
|
|
185
|
+
;;
|
|
186
|
+
[nN]|[nN][oO])
|
|
187
|
+
echo "Aborted deletion of $branch"
|
|
188
|
+
exit 0
|
|
189
|
+
;;
|
|
190
|
+
*)
|
|
191
|
+
echo "Please answer y or n" > /dev/tty
|
|
192
|
+
;;
|
|
193
|
+
esac
|
|
194
|
+
done
|
|
195
|
+
|
|
178
196
|
if git branch -D "$branch"; then
|
|
179
197
|
echo "Deleted local $branch"
|
|
180
198
|
awk -v l="$line" '$0!=l' "$branches_file" > "$branches_file".new && mv "$branches_file".new "$branches_file"
|
|
@@ -196,12 +214,12 @@ DEL_SH
|
|
|
196
214
|
--height=40% \
|
|
197
215
|
--reverse \
|
|
198
216
|
--border \
|
|
199
|
-
--expect=enter,delete
|
|
217
|
+
--expect=enter,delete \
|
|
200
218
|
--query="${filter_for_fzf:-$filter}" \
|
|
201
219
|
-i \
|
|
202
220
|
--preview="branch=\$(echo {} | sed 's/^[^:]*: //'); if [[ \"\$branch\" == *───* ]]; then echo 'Spacer - not selectable'; else git log --color=always -n 1 --format='%C(bold cyan)Author:%C(reset) %an%n%C(bold cyan)Date:%C(reset) %ar (%ad)%n%C(bold cyan)Message:%C(reset) %s%n' --date=format:'%Y-%m-%d %H:%M' \"\$branch\" 2>/dev/null && echo && git log --oneline --color=always -n 10 \"\$branch\" 2>/dev/null; fi" \
|
|
203
221
|
--preview-window=right:50% \
|
|
204
|
-
--header="[Enter] switch | [Del
|
|
222
|
+
--header="[Enter] switch | [Del] delete (local only) | [Esc] exit | Current: $current_branch" \
|
|
205
223
|
< "$branches_file"
|
|
206
224
|
) </dev/tty || true
|
|
207
225
|
|
|
@@ -219,7 +237,7 @@ DEL_SH
|
|
|
219
237
|
break
|
|
220
238
|
fi
|
|
221
239
|
|
|
222
|
-
if [[ "$key_pressed" == "delete"
|
|
240
|
+
if [[ "$key_pressed" == "delete" ]]; then
|
|
223
241
|
# perform deletion on the selected line and continue loop
|
|
224
242
|
if [[ -n "$selection" ]]; then
|
|
225
243
|
"$delete_script" "$selection" "$branches_file"
|