Re: [PATCH 2/3] rebase: accept -<number> as another way of saying HEAD~<number>
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:00:09
On Sat, Mar 1, 2014 at 9:53 PM, Nguyễn Thái Ngọc Duy [off-list ref] wrote:
This is "rev-list style", where people can do "git rev-list -3" in addition to "git rev-list HEAD~3". A lot of commands are driven by the revision machinery and also accept this form. This addition to rebase is just for convenience.
I'm seeing some pretty strange results with this. If I use -1, -2, or -3 then it rebases the expected commits, however, -4 gives me 9 commits, and -5 rebases 35 commits. Am I misunderstanding how this works? I'm testing on a branch based on master with these three patches applied.
quoted hunk ↗ jump to hunk
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- Documentation/git-rebase.txt | 3 +++ git-rebase.sh | 9 +++++++++ t/t3400-rebase.sh | 6 ++++++ 3 files changed, 18 insertions(+)diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 2a93c64..52c3561 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt@@ -223,6 +223,9 @@ As a special case, you may use "A\...B" as a shortcut for the merge base of A and B if there is exactly one merge base. You can leave out at most one of A and B, in which case it defaults to HEAD. +-<number>:: + Specify <upstream> as "HEAD~<number>". + <upstream>:: Upstream branch to compare against. May be any valid commit, not just an existing branch name. Defaults to the configureddiff --git a/git-rebase.sh b/git-rebase.sh index 5f6732b..33face1 100755 --- a/git-rebase.sh +++ b/git-rebase.sh@@ -43,6 +43,7 @@ continue! continue abort! abort and check out the original branch skip! skip current patch and continue edit-todo! edit the todo list during an interactive rebase +-NUM equivalent of HEAD~<NUM> " . git-sh-setup . git-sh-i18n@@ -335,6 +336,9 @@ do --gpg-sign=*) gpg_sign_opt="-S${1#--gpg-sign=}" ;; + -NUM=*) + NUM="${1#-NUM=}" + ;; --) shift break@@ -342,6 +346,11 @@ do esac shift done +if [ -n "$NUM" ] +then + test $# -gt 0 && usage + set -- "$@" "HEAD~$NUM" +fi test $# -gt 2 && usage if test -n "$cmd" &&diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 6d94b1f..11db7ea 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh@@ -215,4 +215,10 @@ test_expect_success 'rebase commit with an ancient timestamp' ' grep "author .* 34567 +0600$" actual ' +test_expect_success 'rebase -<number>' ' + git reset --hard && + test_must_fail git rebase -2 HEAD^^ && + git rebase -2 +' + test_done --1.9.0.40.gaa8c3ea -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html