Permalink
Browse files

Add script to nuke remote branches

  • Loading branch information...
1 parent fb50da1 commit f707115ec0878614baa989085f496a540323296e @paulcbetts paulcbetts committed Dec 13, 2012
Showing with 41 additions and 0 deletions.
  1. +41 −0 script/clean-merged-branches
@@ -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

0 comments on commit f707115

Please sign in to comment.