summaryrefslogtreecommitdiff
path: root/git-rebase-script
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2005-08-17 15:19:57 -0700
committerLibravatar Junio C Hamano <junkio@cox.net>2005-08-17 15:19:57 -0700
commit99a92f928fd02a87d841a8bb19511e7ce526819d (patch)
tree64e286f8900baaa05c9f725a6f8d9b00665ba4d1 /git-rebase-script
parentMake sure alternates are carried over from the original repository. (diff)
downloadtgif-99a92f928fd02a87d841a8bb19511e7ce526819d.tar.xz
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 026225ab2c..7b1d4900bd 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