summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Gesiak <modocache@gmail.com>2014-03-19 20:02:15 +0900
committerJunio C Hamano <gitster@pobox.com>2014-03-19 10:52:51 -0700
commit4f4074077fb0c3a2facc61b333337d024aeeebbf (patch)
tree8a478388eb4a4dccbeac8cf2db8cebf964cc3644
parent5f95c9f850b19b368c43ae399cc831b17a26a5ac (diff)
downloadgit-4f4074077fb0c3a2facc61b333337d024aeeebbf.tar.gz
rebase: allow "-" short-hand for the previous branch
Teach rebase the same shorthand as checkout and merge to name the branch to rebase the current branch on; that is, that "-" means "the branch we were previously on". Requested-by: Tim Chase <git@tim.thechases.com> Signed-off-by: Brian Gesiak <modocache@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-rebase.sh4
-rwxr-xr-xt/t3400-rebase.sh17
2 files changed, 21 insertions, 0 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index 8a3efa2983..658c003c14 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -449,6 +449,10 @@ then
test "$fork_point" = auto && fork_point=t
;;
*) upstream_name="$1"
+ if test "$upstream_name" = "-"
+ then
+ upstream_name="@{-1}"
+ fi
shift
;;
esac
diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh
index 6d94b1fcd9..80e0a951ea 100755
--- a/t/t3400-rebase.sh
+++ b/t/t3400-rebase.sh
@@ -88,6 +88,23 @@ test_expect_success 'rebase from ambiguous branch name' '
git rebase master
'
+test_expect_success 'rebase off of the previous branch using "-"' '
+ git checkout master &&
+ git checkout HEAD^ &&
+ git rebase @{-1} >expect.messages &&
+ git merge-base master HEAD >expect.forkpoint &&
+
+ git checkout master &&
+ git checkout HEAD^ &&
+ git rebase - >actual.messages &&
+ git merge-base master HEAD >actual.forkpoint &&
+
+ test_cmp expect.forkpoint actual.forkpoint &&
+ # the next one is dubious---we may want to say "-",
+ # instead of @{-1}, in the message
+ test_i18ncmp expect.messages actual.messages
+'
+
test_expect_success 'rebase a single mode change' '
git checkout master &&
git branch -D topic &&