# [RFC/PATCH] rebase -i: use full onto sha1 in reflog

5 messages from 2012-08-09 to 2012-08-10. Participants: Michael J Gruber, Martin von Zweigbergk, Junio C Hamano.
Thread: https://gitlist.dev/t/31218

## Michael J Gruber, 2012-08-09 16:05

Subject: [RFC/PATCH] rebase -i: use full onto sha1 in reflog
Message-ID: <89f79049a5fd737716ad51630a8c1ee4a27d747e.1344528082.git.git@drmicha.warpmail.net>
URL: https://gitlist.dev/e/89f79049a5fd737716ad51630a8c1ee4a27d747e.1344528082.git.git%40drmicha.warpmail.net

```
'git rebase' uses the full onto sha1 for the reflog message whereas 'git
rebase -i' uses the short sha1. This is not only inconsistent, but can
lead to problems when the reflog is inspected at a later time at which
that abbreviation may have become ambiguous.

Make 'rebase -i' use the full onto sha1, as well.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
I don't remember having sent this out before but have been running with
it since (including tests). I don't see it on the list either.

While not for 1.7.12 obviously, it might still be good to have.

 git-rebase--interactive.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 0d2056f..dbc9de6 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -573,7 +573,7 @@ do_next () {
 	newhead=$(git rev-parse HEAD) &&
 	case $head_name in
 	refs/*)
-		message="$GIT_REFLOG_ACTION: $head_name onto $shortonto" &&
+		message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
 		git update-ref -m "$message" $head_name $newhead $orig_head &&
 		git symbolic-ref \
 		  -m "$GIT_REFLOG_ACTION: returning to $head_name" \
-- 
1.7.12.rc2.245.g4f94e02

```

## Martin von Zweigbergk, 2012-08-09 17:04

Subject: Re: [RFC/PATCH] rebase -i: use full onto sha1 in reflog
Message-ID: <CAOeW2eESQyT0xzy8KjAdhgr45MGosY86cQOy2VsN6TtJqeEYjA@mail.gmail.com>
URL: https://gitlist.dev/e/CAOeW2eESQyT0xzy8KjAdhgr45MGosY86cQOy2VsN6TtJqeEYjA%40mail.gmail.com
In-Reply-To: <89f79049a5fd737716ad51630a8c1ee4a27d747e.1344528082.git.git@drmicha.warpmail.net>

```
On Thu, Aug 9, 2012 at 9:05 AM, Michael J Gruber
<git@drmicha.warpmail.net> wrote:
> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
> index 0d2056f..dbc9de6 100644
> --- a/git-rebase--interactive.sh
> +++ b/git-rebase--interactive.sh
> @@ -573,7 +573,7 @@ do_next () {
>         newhead=$(git rev-parse HEAD) &&
>         case $head_name in
>         refs/*)
> -               message="$GIT_REFLOG_ACTION: $head_name onto $shortonto" &&
> +               message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&

After this patch, is there any point in the

 shortonto=$(git rev-parse --short $onto) &&

line just before the context? (I can't see any.)

```

## Junio C Hamano, 2012-08-09 17:08

Subject: Re: [RFC/PATCH] rebase -i: use full onto sha1 in reflog
Message-ID: <7va9y4ouvx.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7va9y4ouvx.fsf%40alter.siamese.dyndns.org
In-Reply-To: <89f79049a5fd737716ad51630a8c1ee4a27d747e.1344528082.git.git@drmicha.warpmail.net>

```
Michael J Gruber <git@drmicha.warpmail.net> writes:

> 'git rebase' uses the full onto sha1 for the reflog message whereas 'git
> rebase -i' uses the short sha1. This is not only inconsistent, but can
> lead to problems when the reflog is inspected at a later time at which
> that abbreviation may have become ambiguous.
>
> Make 'rebase -i' use the full onto sha1, as well.
>
> Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
> ---
> I don't remember having sent this out before but have been running with
> it since (including tests). I don't see it on the list either.
>
> While not for 1.7.12 obviously, it might still be good to have.

Makes sense, I agree it is not that urgent to include it in 1.7.12,
and I think it is not just "good to have" but "we should have done
so from day one and it cannot break anybody who is reading the
reflog".

Thanks.

>
>  git-rebase--interactive.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
> index 0d2056f..dbc9de6 100644
> --- a/git-rebase--interactive.sh
> +++ b/git-rebase--interactive.sh
> @@ -573,7 +573,7 @@ do_next () {
>  	newhead=$(git rev-parse HEAD) &&
>  	case $head_name in
>  	refs/*)
> -		message="$GIT_REFLOG_ACTION: $head_name onto $shortonto" &&
> +		message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
>  		git update-ref -m "$message" $head_name $newhead $orig_head &&
>  		git symbolic-ref \
>  		  -m "$GIT_REFLOG_ACTION: returning to $head_name" \

```

## Junio C Hamano, 2012-08-09 17:48

Subject: Re: [RFC/PATCH] rebase -i: use full onto sha1 in reflog
Message-ID: <7vwr18nehe.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vwr18nehe.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAOeW2eESQyT0xzy8KjAdhgr45MGosY86cQOy2VsN6TtJqeEYjA@mail.gmail.com>

```
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> writes:

> On Thu, Aug 9, 2012 at 9:05 AM, Michael J Gruber
> <git@drmicha.warpmail.net> wrote:
>> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
>> index 0d2056f..dbc9de6 100644
>> --- a/git-rebase--interactive.sh
>> +++ b/git-rebase--interactive.sh
>> @@ -573,7 +573,7 @@ do_next () {
>>         newhead=$(git rev-parse HEAD) &&
>>         case $head_name in
>>         refs/*)
>> -               message="$GIT_REFLOG_ACTION: $head_name onto $shortonto" &&
>> +               message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
>
> After this patch, is there any point in the
>
>  shortonto=$(git rev-parse --short $onto) &&
>
> line just before the context? (I can't see any.)

Good point; the function always exits after reaching this point, so
it should be safe to omit it.

```

## Michael J Gruber, 2012-08-10 06:51

Subject: [PATCHv2] rebase -i: use full onto sha1 in reflog
Message-ID: <54180665e1207275db9694cd68f49ff96812284e.1344581316.git.git@drmicha.warpmail.net>
URL: https://gitlist.dev/e/54180665e1207275db9694cd68f49ff96812284e.1344581316.git.git%40drmicha.warpmail.net
In-Reply-To: <7vwr18nehe.fsf@alter.siamese.dyndns.org>

```
'git rebase' uses the full onto sha1 for the reflog message whereas 'git
rebase -i' uses the short sha1. This is not only inconsistent, but can
lead to problems when the reflog is inspected at a later time at which
that abbreviation may have become ambiguous.

Make 'rebase -i' use the full onto sha1, as well.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
So, this is without the now superfluous shortonto definition.

The other place where shortonto is defined is still needed.

 git-rebase--interactive.sh | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 0d2056f..a09e842 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -569,11 +569,10 @@ do_next () {
 	test -s "$todo" && return
 
 	comment_for_reflog finish &&
-	shortonto=$(git rev-parse --short $onto) &&
 	newhead=$(git rev-parse HEAD) &&
 	case $head_name in
 	refs/*)
-		message="$GIT_REFLOG_ACTION: $head_name onto $shortonto" &&
+		message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
 		git update-ref -m "$message" $head_name $newhead $orig_head &&
 		git symbolic-ref \
 		  -m "$GIT_REFLOG_ACTION: returning to $head_name" \
-- 
1.7.12.rc2.245.g4f94e02

```
