]> git.wh0rd.org - home.git/blob - .bin/git-rb-all
0323d73ba451152045011412be816ad25a60fd36
[home.git] / .bin / git-rb-all
1 #!/bin/bash
2 # Helper to rewrite all local branches.
3
4 rb_one() {
5 local b=$1
6
7 printf "### ${b}"
8 if ! git config --local "branch.${b}.merge" >/dev/null; then
9 echo " -> skipping due to missing merge branch"
10 else
11 echo
12 git checkout -q "${b}" || return
13 if ! git rebase ; then
14 git rebase --abort
15 fi
16 fi
17 }
18
19 usage() {
20 cat <<EOF
21 Usage: rb-all
22 EOF
23 exit 1
24 }
25
26 main() {
27 if [[ $# -ne 0 ]] ; then
28 usage
29 fi
30
31 local orig b branches
32 orig=$(git rev-parse --abbrev-ref HEAD) || return
33
34 branches=( $(git ls-remote --heads . | sed 's:.*refs/heads/::') )
35 for b in "${branches[@]}" ; do
36 rb_one "${b}"
37 done
38
39 git checkout -q "${orig}"
40 }
41 main "$@"