Re: [PATCH 2/3] rebase: accept -<number> as another way of saying HEAD~<number>
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Mar 2, 2014, 08:53 UTC
- Message-ID
- <CAPig+cSPKSsVG_yqaQfOCswaENKdUGrWt_YcQ3yZCpgG5jQ+JQ@mail.gmail.com>
- In-Reply-To
- <1393728794-29566-3-git-send-email-pclouds@gmail.com>
On Sat, Mar 1, 2014 at 9:53 PM, Nguyễn Thái Ngọc Duy <pclouds@gmail.com> 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.
Show 77 quoted lines
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> 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 configured
> diff --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