Make rebase script saner.
authorJunio C Hamano <junkio@cox.net>
Wed, 17 Aug 2005 22:19:57 +0000 (15:19 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 17 Aug 2005 22:19:57 +0000 (15:19 -0700)
It did not check to see if the working tree was clean and matched
the commit we were starting out as, resulting in the initial rebased
commit including whatever dirty state the working tree has had.

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-rebase-script

index 026225a..7b1d490 100755 (executable)
@@ -17,16 +17,19 @@ case "$#,$1" in
     shift ;;
 esac
 
     shift ;;
 esac
 
+git-update-cache --refresh || exit
+
 case "$#" in
 case "$#" in
-1) upstream=`git-rev-parse --verify "$1"` &&
-   ours=`git-rev-parse --verify HEAD` || exit
-   ;;
-2) upstream=`git-rev-parse --verify "$1"` &&
-   ours=`git-rev-parse --verify "$2"` || exit
-   ;;
-*) echo >&2 "$usage"; exit 1 ;;
+1) ours_symbolic=HEAD ;;
+2) ours_symbolic="$2" ;;
+*) die "$usage" ;;
 esac
 
 esac
 
+upstream=`git-rev-parse --verify "$1"` &&
+ours=`git-rev-parse --verify "$ours_symbolic^` || exit
+test "$(git-diff-cache --cached "$ours")" = "" || 
+die "Your working tree does not match $ours_symbolic."
+
 git-read-tree -m -u $ours $upstream &&
 git-rev-parse --verify "$upstream^0" >"$GIT_DIR/HEAD" || exit
 
 git-read-tree -m -u $ours $upstream &&
 git-rev-parse --verify "$upstream^0" >"$GIT_DIR/HEAD" || exit