Browse Source

rebase --interactive: Compute upstream SHA1 before switching branches

If the upstream argument to rebase (the first argument) was relative to
HEAD and the name of the branch to rebase (the second argument) was given,
the upstream would have been interpreted relative to the second argument.
In particular, this command

    git rebase -i HEAD topic

would always finish with "Nothing to do". (a1bf91e fixed the same issue
for non-interactive rebase.)

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Sixt 17 years ago committed by Junio C Hamano
parent
commit
69e66f5500
  1. 7
      git-rebase--interactive.sh

7
git-rebase--interactive.sh

@ -475,6 +475,9 @@ do


require_clean_work_tree require_clean_work_tree


UPSTREAM=$(git rev-parse --verify "$1") || die "Invalid base"
test -z "$ONTO" && ONTO=$UPSTREAM

if test ! -z "$2" if test ! -z "$2"
then then
output git show-ref --verify --quiet "refs/heads/$2" || output git show-ref --verify --quiet "refs/heads/$2" ||
@ -484,12 +487,8 @@ do
fi fi


HEAD=$(git rev-parse --verify HEAD) || die "No HEAD?" HEAD=$(git rev-parse --verify HEAD) || die "No HEAD?"
UPSTREAM=$(git rev-parse --verify "$1") || die "Invalid base"

mkdir "$DOTEST" || die "Could not create temporary $DOTEST" mkdir "$DOTEST" || die "Could not create temporary $DOTEST"


test -z "$ONTO" && ONTO=$UPSTREAM

: > "$DOTEST"/interactive || die "Could not mark as interactive" : > "$DOTEST"/interactive || die "Could not mark as interactive"
git symbolic-ref HEAD > "$DOTEST"/head-name 2> /dev/null || git symbolic-ref HEAD > "$DOTEST"/head-name 2> /dev/null ||
echo "detached HEAD" > "$DOTEST"/head-name echo "detached HEAD" > "$DOTEST"/head-name

Loading…
Cancel
Save