changeset 291:142fb39e4e55

hg-rebase-all: correctly use rebase result code Exit status 1 can mean "nothing to rebase", which isn't helpful for our case. Added a slight tangle of if statements to work around that.
author Augie Fackler <raf@durin42.com>
date Wed, 17 Oct 2012 08:21:28 -0500
parents 7a99481ab888
children 228f11416f28 d9cc862e6308
files .shell.d/50.hg_functions.sh
diffstat 1 files changed, 42 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/.shell.d/50.hg_functions.sh
+++ b/.shell.d/50.hg_functions.sh
@@ -15,16 +15,27 @@ alias mq-snapshot=mq_snapshot
 function hg_rebase_all () {
     hg sum | egrep 'commit: .*\(clean\)$' || (echo 'abort: wc not clean' ; return 1) || return 1
     if [ "x$1" = "x" ] ; then
-	echo 'abort: give destination for rebase'
-	return 2
+        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
+        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 $b
-	hg rebase -d "$1"
+        echo "About to rebase $b"
+        hg co --clean $b
+        out=$(hg rebase -d "$1")
+        code=$?
+        grep "nothing to rebase" <(echo $out)
+        if [ $? = 0 ] ; then
+            echo 'moving on'
+        else
+            if [ $out -ne 0 ] ; then
+                echo "rebase exited with status $out"
+                return 3
+            fi
+        fi
     done
 }
 alias hg-rebase-all=hg_rebase_all
@@ -45,18 +56,18 @@ alias hg-svn-merge-branch=hgsvnmergebran
 function hgsvnrebaseall() {
     for b in `hg log -u 'Augie Fackler <durin42@gmail.com>' --template '{branches}\n' | sort | uniq`
     do
-	echo "rebase $b"
-	hg co $b
-	if [[ "$?" != "0" ]] ; then
-	    echo "abort: could not checkout $b"
-	    return
-	fi
-	hg parent --svn > /dev/null
-	if [[ "$?" == "0" ]] ; then
-	    hg rebase --svn || return
-	else
-	    echo "Skip $b since it has a merge."
-	fi
+        echo "rebase $b"
+        hg co $b
+        if [[ "$?" != "0" ]] ; then
+            echo "abort: could not checkout $b"
+            return
+        fi
+        hg parent --svn > /dev/null
+        if [[ "$?" == "0" ]] ; then
+            hg rebase --svn || return
+        else
+            echo "Skip $b since it has a merge."
+        fi
     done
 }
 alias hg-svn-rebase-all=hgsvnrebaseall
@@ -79,22 +90,22 @@ function hgsvnmkbranch() {
     upstream=$(hg paths default | sed 's%/*$%%')
     local branchname
     if [ "x$1" = "x" ] ; then
-	echo 'Must provide new branch name.'
-	return 1
+        echo 'Must provide new branch name.'
+        return 1
     fi
     local d=`hg svn info | grep URL | sed 's/.*://'`
     local br=`echo $d | awk '{
-	    if ( index($1, "trunk") ) {
-		    print  "trunk"
-		} else {
-		    x = index($1, "branches") ;
-		    if ( x != 0 ) {
-			    sub(".*/branches/", "");
-			    sub("/.*", "");
-			    print $0
-			}
-		}
-		}'`
+            if ( index($1, "trunk") ) {
+                    print  "trunk"
+                } else {
+                    x = index($1, "branches") ;
+                    if ( x != 0 ) {
+                            sub(".*/branches/", "");
+                            sub("/.*", "");
+                            print $0
+                        }
+                }
+                }'`
 
     branchname=$br
     echo svn cp $upstream/$branchname $upstream/branches/$1