aboutsummaryrefslogtreecommitdiff
path: root/git-rebase.sh
diff options
context:
space:
mode:
authorPhil Hord <hordp@cisco.com>2013-04-23 18:51:14 -0400
committerJunio C Hamano <gitster@pobox.com>2013-04-23 16:29:07 -0700
commitea709800302ecae8c2fbb03af01e36b7f9b4d042 (patch)
tree363a4ec5029979224e8c282612b4a2215f3829e0 /git-rebase.sh
parent7e2010537e96d0a1144520222f20ba1dc3d61441 (diff)
downloadgit-ea709800302ecae8c2fbb03af01e36b7f9b4d042.tar.gz
git-ea709800302ecae8c2fbb03af01e36b7f9b4d042.tar.xz
rebase: find orig_head unambiguously
When we 'git rebase $upstream', git uses 'rev-parse --verify $current_branch' to find ORIG_HEAD. But if $current_branch is ambiguous, 'rev-parse --verify' emits a warning and returns a SHA1 anyway. When the wrong ambiguous choice is used, git-rebase fails non-gracefully: it emits a warning about failing to lock $current_branch, an error about being unable to checkout $current_branch again, and it might even decide the rebase is a fast-forward when it is not. In the 'rebase $upstream' case, we already know the unambiguous spelling of $current_branch is "HEAD". Fix git-rebase to find $orig_head unambiguously. Add a test in t3400-rebase.sh which creates an ambiguous branch name and rebases it implicitly with 'git rebase $other'. Signed-off-by: Phil Hord <hordp@cisco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase.sh')
-rwxr-xr-xgit-rebase.sh2
1 files changed, 1 insertions, 1 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index 15da926ce..d6c52e6f9 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -464,7 +464,7 @@ case "$#" in
head_name="detached HEAD"
branch_name=HEAD ;# detached
fi
- orig_head=$(git rev-parse --verify "${branch_name}^0") || exit
+ orig_head=$(git rev-parse --verify HEAD) || exit
;;
*)
die "BUG: unexpected number of arguments left to parse"