42 строки
959 B
Bash
42 строки
959 B
Bash
#!/bin/sh
|
|
#/ Usage: clean-merged-branches [-f]
|
|
#/ Delete merged branches from the origin remote.
|
|
#/
|
|
#/ Options:
|
|
#/ -f Really delete the branches. Without this branches are shown
|
|
#/ but nothing is deleted.
|
|
set -e
|
|
|
|
# show usage maybe
|
|
[ "$1" = "--help" ] && {
|
|
grep '^#/' <"$0"| cut -c4-
|
|
exit 0
|
|
}
|
|
|
|
# fetch and prune remote branches
|
|
git fetch origin --prune
|
|
|
|
# grab list of merged branches
|
|
branches=$(
|
|
git branch -a --merged origin/master |
|
|
grep remotes/origin/ |
|
|
grep -v /master |
|
|
grep -v 'enterprise-.*-release' |
|
|
sed 's@remotes/origin/@@'
|
|
)
|
|
|
|
# bail out with no branches
|
|
[ -z "$branches" ] && {
|
|
echo "no merged branches detected" 1>&2
|
|
exit 0
|
|
}
|
|
|
|
# delete the branches or just show what would be done without -f
|
|
if [ "$1" = -f ]; then
|
|
git push origin $(echo "$branches" | sed 's/^ */:/')
|
|
else
|
|
echo "These branches will be deleted:" 1>&2
|
|
echo "$branches"
|
|
echo "Run \`$0 -f' if you're sure."
|
|
fi
|