snapshot 2006-04-14
[git.git] / RB
diff --git a/RB b/RB
new file mode 100755 (executable)
index 0000000..ebd5efe
--- /dev/null
+++ b/RB
@@ -0,0 +1,42 @@
+#!/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
+       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
+
+