diff .shell.d/50.hg_functions.sh @ 228:0c8939baa35c

hg-rebase-all: new function to rebase all bookmarked revisions
author Augie Fackler <durin42@gmail.com>
date Sat, 09 Oct 2010 15:21:50 -0500
parents 0590f34b92a0
children 6da5a4729bc7
line wrap: on
line diff
--- a/.shell.d/50.hg_functions.sh
+++ b/.shell.d/50.hg_functions.sh
@@ -11,6 +11,23 @@ function mq-snapshot () {
     mq ci -m "Applied on $(hg log -r qparent --template '{node|short}\n')"
 }
 
+function hg_rebase_all () {
+    hg sum | grep 'commit: .* (clean)$' || (echo 'abort: wc not clean' ; return 1) || return 1
+    if [ "x$1" = "x" ] ; then
+	echo 'abort: give destination for rebase'
+	return 2
+    fi
+    if [ "$1" = "tip" ] ; then
+	echo 'abort: tip is essentially never what you mean here'
+	return 2
+    fi
+    for b in $(hg book | sed 's/^ \*/  /' | awk '{ print $1 }') ; do
+	hg co --clean $book
+	hg rebase -d "$1"
+    done
+}
+alias hg-rebase-all=hg_rebase_all
+
 function hgsvnmergebranch() {
     local targetrev
     local striprev