]>
Commit | Line | Data |
---|---|---|
ba2e5f1f MF |
1 | #!/bin/bash |
2 | # Helper to rewrite all local branches. | |
3 | ||
4 | rb_one() { | |
5 | local b=$1 | |
6 | ||
fc774894 MF |
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 | |
5730a476 | 12 | git checkout -q "${b}" || return |
fc774894 MF |
13 | if ! git rebase ; then |
14 | git rebase --abort | |
15 | fi | |
ba2e5f1f MF |
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 | ||
fa1a0920 MF |
31 | # Switch to the top dir in case the working dir doesn't exist in every branch. |
32 | cd "$(git rev-parse --show-toplevel)" || return | |
33 | ||
ba2e5f1f MF |
34 | local orig b branches |
35 | orig=$(git rev-parse --abbrev-ref HEAD) || return | |
36 | ||
86bc09eb | 37 | branches=( $(git ls-remote --heads . | sed 's:.*refs/heads/::') ) |
ba2e5f1f MF |
38 | for b in "${branches[@]}" ; do |
39 | rb_one "${b}" | |
40 | done | |
41 | ||
42 | git checkout -q "${orig}" | |
43 | } | |
44 | main "$@" |