Make rebase script saner.

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>
maint
Junio C Hamano 2005-08-17 15:19:57 -07:00
parent 0f87f89365
commit 99a92f928f
1 changed files with 10 additions and 7 deletions

View File

@ -17,16 +17,19 @@ case "$#,$1" in
shift ;;
esac

git-update-cache --refresh || exit

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

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