| #!/bin/sh |
| |
| master_sha1=`git rev-parse --verify refs/heads/master` |
| LF=' |
| ' |
| (cd .git/refs/heads && find -type f) | |
| sed -n \ |
| -e 's/^\.\///' \ |
| -e '/^[^\/][^\/]\//p' | |
| while read topic |
| do |
| case " $* " in |
| *' '"$topic"' '*) |
| echo >&2 "* Skipping $topic" |
| continue ;; |
| esac |
| |
| rebase= done= not_done= trouble= date= |
| topic_sha1=`git rev-parse --verify "refs/heads/$topic"` |
| |
| date=` |
| git rev-list -1 --pretty "$topic" | |
| sed -ne 's/^Date: *\(.*\)/ (\1)/p' |
| ` |
| only_next_1=`git rev-list ^master "^$topic" next | sort` |
| only_next_2=`git rev-list ^master next | sort` |
| rebase= |
| if test "$only_next_1" = "$only_next_2" |
| then |
| not_in_topic=`git rev-list "^$topic" master` |
| if test -z "$not_in_topic" |
| then |
| :; # already up-to-date. |
| else |
| rebase=" (can be rebased)" |
| fi |
| fi |
| if test -n "$rebase" |
| then |
| echo "Rebasing $topic to pick up:" |
| git rev-list --pretty=oneline "^$topic" master | |
| sed -e 's/^[0-9a-f]* / * /' |
| git checkout "$topic" && |
| git rebase master || break; |
| fi |
| done |
| |
| |