aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Olszewski <cxreg@pobox.com>2010-03-14 21:48:22 -0700
committerJunio C Hamano <gitster@pobox.com>2010-03-14 23:08:09 -0700
commit2ec33cdd19bd80308fcef45828e37e79c4b56dc5 (patch)
treeb6349412abf63f39f70dc2fb4c262d72b4f86d23
parent3a27f415dfa46bd9e5b693abcac708903d3134f4 (diff)
downloadgit-2ec33cdd19bd80308fcef45828e37e79c4b56dc5.tar.gz
git-2ec33cdd19bd80308fcef45828e37e79c4b56dc5.tar.xz
rebase--interactive: don't require what's rebased to be a branch
git rebase allows you to specify a non-branch commit-ish as the "branch" argument, which leaves HEAD detached when it's finished. This is occasionally useful, and this patch brings the same functionality to git rebase --interactive. Signed-off-by: Dave Olszewski <cxreg@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-rebase--interactive.sh2
-rwxr-xr-xt/t3404-rebase-interactive.sh9
2 files changed, 9 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 3e4fd1456..d047dcb3e 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -783,8 +783,6 @@ first and then run 'git rebase --continue' again."
if test ! -z "$1"
then
- output git show-ref --verify --quiet "refs/heads/$1" ||
- die "Invalid branchname: $1"
output git checkout "$1" ||
die "Could not checkout $1"
fi
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 4e3513709..05708c246 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -553,4 +553,13 @@ test_expect_success 'reword' '
git show HEAD~2 | grep "C changed"
'
+test_expect_success 'rebase while detaching HEAD' '
+ git symbolic-ref HEAD &&
+ grandparent=$(git rev-parse HEAD~2) &&
+ test_tick &&
+ FAKE_LINES="2 1" git rebase -i HEAD~2 HEAD^0 &&
+ test $grandparent = $(git rev-parse HEAD~2) &&
+ test_must_fail git symbolic-ref HEAD
+'
+
test_done