Add 'git-cb' script
parent
bd4133d5e5
commit
b53f1ee586
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
types=(
|
||||||
|
"feature For new features"
|
||||||
|
"bugfix For bug fixes"
|
||||||
|
"hotfix For urgent fixes"
|
||||||
|
"release For preparing releases"
|
||||||
|
"chore For non-code tasks"
|
||||||
|
)
|
||||||
|
|
||||||
|
selected=$(printf '%s\n' "${types[@]}" | fzf --prompt="Select branch type: ") || exit 1
|
||||||
|
type=${selected%% *}
|
||||||
|
|
||||||
|
editor="${EDITOR:-vi}"
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
|
||||||
|
cat > "$tmpfile" << 'EOF'
|
||||||
|
# Enter your branch description below in kebab case (e.g. `my-description`):
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
"$editor" "$tmpfile"
|
||||||
|
|
||||||
|
desc=$(grep -v '^#' "$tmpfile" | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||||
|
rm "$tmpfile"
|
||||||
|
|
||||||
|
if [[ -z "$desc" ]]; then
|
||||||
|
echo "No description provided."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! "$desc" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
|
||||||
|
echo "Invalid branch description format."
|
||||||
|
echo "Use lowercase letters, numbers, and hyphens only."
|
||||||
|
echo "No trailing or consecutive hyphens allowed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
branch="$type/$desc"
|
||||||
|
|
||||||
|
git checkout -b "$branch"
|
Loading…
Reference in New Issue