Add script to nuke remote branches
This commit is contained in:
Родитель
69af4a6ef0
Коммит
e15d0187e5
|
@ -0,0 +1,41 @@
|
|||
#!/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
|
Загрузка…
Ссылка в новой задаче