summaryrefslogtreecommitdiff
path: root/git-rebase-script
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-08-17 22:19:57 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-08-17 22:19:57 (GMT)
commit99a92f928fd02a87d841a8bb19511e7ce526819d (patch)
tree64e286f8900baaa05c9f725a6f8d9b00665ba4d1 /git-rebase-script
parent0f87f893657129907ff966f44aed7c7624d7ba1b (diff)
downloadgit-99a92f928fd02a87d841a8bb19511e7ce526819d.zip
git-99a92f928fd02a87d841a8bb19511e7ce526819d.tar.gz
git-99a92f928fd02a87d841a8bb19511e7ce526819d.tar.bz2
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>
Diffstat (limited to 'git-rebase-script')
-rwxr-xr-xgit-rebase-script17
1 files changed, 10 insertions, 7 deletions
diff --git a/git-rebase-script b/git-rebase-script
index 026225a..7b1d490 100755
--- a/git-rebase-script
+++ b/git-rebase-script
@@ -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