| #!/bin/sh | |
| set -e | |
| check_branch(){ | |
| branch="$1" | |
| shift | |
| test "$branch" = "staging" && return | |
| test "$branch" = "gh-pages" && return | |
| test "$branch" = "HEAD" && return | |
| test "$branch" = "master" && return | |
| echo -n " :refs/heads/$branch" | |
| } | |
| run(){ | |
| git fetch origin | |
| refspec=$( | |
| git for-each-ref --merged origin/master refs/remotes/origin | while read rev commit ref; do | |
| check_branch "${ref#refs/remotes/origin/}" | |
| done | |
| ) | |
| if test -z "$refspec"; then | |
| echo No branches to clean | |
| return | |
| fi | |
| set -x | |
| git push "$@" origin ${refspec} | |
| } | |
| run "$@" |