# [BUG?] git rebase -i

7 messages from 2007-12-14 to 2007-12-18. Participants: Pieter de Bie, Johannes Sixt, Johannes Schindelin, Junio C Hamano.
Thread: https://gitlist.dev/t/11280

## Pieter de Bie, 2007-12-14 01:21

Subject: [BUG?] git rebase -i
Message-ID: <2791F15A-EB72-4FE4-8DB3-7A4B4DCB07B3@frim.nl>
URL: https://gitlist.dev/e/2791F15A-EB72-4FE4-8DB3-7A4B4DCB07B3%40frim.nl

```
Hi,

I was just toying with git rebase -i -p, when I found the following:

Tirana:~/git pieter$ /opt/local/bin/git --version
git version 1.5.3.5

Tirana:~/git pieter$ time /opt/local/bin/git rebase -p -i HEAD~100
Successfully rebased and updated refs/heads/master.

real    0m17.816s
user    0m3.927s
sys     0m10.381s

Tirana:~/git pieter$ git --version
git version 1.5.4.rc0
Tirana:~/git pieter$ time git rebase -p -i HEAD~100
cat: /Users/pieter/git/.git/.dotest-merge/rewritten/ 
1e8df762b38e01685f3aa3613e2d61f73346fcbe: No such file or directory

real    0m20.427s
user    0m4.449s
sys     0m14.028s

The rebase in 1.5.4.rc0 exists with an error. Another thing to note  
is that the 1.5.4.rc0 tries to apply 215 patches, while the 1.5.3.5  
tries to apply 206 patches. This test was done on the git master  
branch (tagged 1.5.4.rc0). I did not change anything in the  
interactive rebase editor (just hit :wq in vim).

- Pieter

```

## Johannes Sixt, 2007-12-14 07:30

Subject: Re: [BUG?] git rebase -i
Message-ID: <47623129.2030303@viscovery.net>
URL: https://gitlist.dev/e/47623129.2030303%40viscovery.net
In-Reply-To: <2791F15A-EB72-4FE4-8DB3-7A4B4DCB07B3@frim.nl>

```
Pieter de Bie schrieb:
> Another thing to note is
> that the 1.5.4.rc0 tries to apply 215 patches, while the 1.5.3.5 tries
> to apply 206 patches.

This is to be expected: 1.5.3.5 counts the comment lines at the top of the
action file, of which there are exactly 9, 1.5.4.rc0 does not count them.

-- Hannes

```

## Pieter de Bie, 2007-12-17 16:04

Subject: Re: [BUG?] git rebase -i
Message-ID: <9CC305E7-3325-4D17-A43E-0A2072F52084@ai.rug.nl>
URL: https://gitlist.dev/e/9CC305E7-3325-4D17-A43E-0A2072F52084%40ai.rug.nl
In-Reply-To: <47623129.2030303@viscovery.net>

```
Hi,

On Dec 14, 2007, at 8:30 AM, Johannes Sixt wrote:
> Pieter de Bie schrieb:
>> Another thing to note is
>> that the 1.5.4.rc0 tries to apply 215 patches, while the 1.5.3.5  
>> tries
>> to apply 206 patches.
>
> This is to be expected: 1.5.3.5 counts the comment lines at the top  
> of the
> action file, of which there are exactly 9, 1.5.4.rc0 does not count  
> them.
>

Ok, but what about the error in the rebase?

On Dec 14, 2007, at 2:21 AM, Pieter de Bie wrote:
> Tirana:~/git pieter$ time git rebase -p -i HEAD~100
> cat: /Users/pieter/git/.git/.dotest-merge/rewritten/ 
> 1e8df762b38e01685f3aa3613e2d61f73346fcbe: No such file or directory


- Pieter

```

## Johannes Schindelin, 2007-12-17 16:59

Subject: [PATCH] rebase -p -i: handle "no changes" gracefully
Message-ID: <Pine.LNX.4.64.0712171649420.9446@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0712171649420.9446%40racer.site
In-Reply-To: <9CC305E7-3325-4D17-A43E-0A2072F52084@ai.rug.nl>

```

Since commit 376ccb8cbb453343998e734d8a1ce79f57a4e092, unchanged
SHA-1s are no longer mapped via $REWRITTEN.  But the updating
phase was not prepared for the old head not being rewritten.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---

	On Mon, 17 Dec 2007, Pieter de Bie wrote:

	> Ok, but what about the error in the rebase?
	> 
	> On Dec 14, 2007, at 2:21 AM, Pieter de Bie wrote:
	> > Tirana:~/git pieter$ time git rebase -p -i HEAD~100
	> > cat:
	> > /Users/pieter/git/.git/.dotest-merge/rewritten/1e8df762b38e01685f3aa3613e2d61f73346fcbe:
	> > No such file or directory

	This buglet was not caught earlier, probably because a 
	non-rewriting rebase is not really interesting ;-)

 git-rebase--interactive.sh |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index f83e00f..cd7e43f 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -322,7 +322,12 @@ do_next () {
 		test -f "$DOTEST"/current-commit &&
 			current_commit=$(cat "$DOTEST"/current-commit) &&
 			git rev-parse HEAD > "$REWRITTEN"/$current_commit
-		NEWHEAD=$(cat "$REWRITTEN"/$OLDHEAD)
+		if test -f "$REWRITTEN"/$OLDHEAD
+		then
+			NEWHEAD=$(cat "$REWRITTEN"/$OLDHEAD)
+		else
+			NEWHEAD=$OLDHEAD
+		fi
 	else
 		NEWHEAD=$(git rev-parse HEAD)
 	fi &&
-- 
1.5.4.rc0.59.g1d10d

```

## Junio C Hamano, 2007-12-17 20:23

Subject: Re: [PATCH] rebase -p -i: handle "no changes" gracefully
Message-ID: <7vprx56pfn.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vprx56pfn.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <Pine.LNX.4.64.0712171649420.9446@racer.site>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Since commit 376ccb8cbb453343998e734d8a1ce79f57a4e092, unchanged
> SHA-1s are no longer mapped via $REWRITTEN.  But the updating
> phase was not prepared for the old head not being rewritten.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>
> 	On Mon, 17 Dec 2007, Pieter de Bie wrote:
>
> 	> Ok, but what about the error in the rebase?
> 	> 
> 	> On Dec 14, 2007, at 2:21 AM, Pieter de Bie wrote:
> 	> > Tirana:~/git pieter$ time git rebase -p -i HEAD~100
> 	> > cat:
> 	> > /Users/pieter/git/.git/.dotest-merge/rewritten/1e8df762b38e01685f3aa3613e2d61f73346fcbe:
> 	> > No such file or directory
>
> 	This buglet was not caught earlier, probably because a 
> 	non-rewriting rebase is not really interesting ;-)

Hmph, care to add a test to t3404?

```

## Johannes Schindelin, 2007-12-17 21:01

Subject: [PATCH w/ test] rebase -p -i: handle "no changes" gracefully
Message-ID: <Pine.LNX.4.64.0712172100450.9446@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0712172100450.9446%40racer.site
In-Reply-To: <7vprx56pfn.fsf@gitster.siamese.dyndns.org>

```

Since commit 376ccb8cbb453343998e734d8a1ce79f57a4e092, unchanged
SHA-1s are no longer mapped via $REWRITTEN.  But the updating
phase was not prepared for the old head not being rewritten.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---

	On Mon, 17 Dec 2007, Junio C Hamano wrote:

	> Hmph, care to add a test to t3404?

	How about this?

 git-rebase--interactive.sh    |    7 ++++++-
 t/t3404-rebase-interactive.sh |    6 ++++++
 2 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index f83e00f..cd7e43f 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -322,7 +322,12 @@ do_next () {
 		test -f "$DOTEST"/current-commit &&
 			current_commit=$(cat "$DOTEST"/current-commit) &&
 			git rev-parse HEAD > "$REWRITTEN"/$current_commit
-		NEWHEAD=$(cat "$REWRITTEN"/$OLDHEAD)
+		if test -f "$REWRITTEN"/$OLDHEAD
+		then
+			NEWHEAD=$(cat "$REWRITTEN"/$OLDHEAD)
+		else
+			NEWHEAD=$OLDHEAD
+		fi
 	else
 		NEWHEAD=$(git rev-parse HEAD)
 	fi &&
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 907c7f9..74a7eb3 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -184,6 +184,12 @@ test_expect_success 'retain authorship when squashing' '
 	git show HEAD | grep "^Author: Twerp Snog"
 '
 
+test_expect_success '-p handles "no changes" gracefully' '
+	HEAD=$(git rev-parse HEAD) &&
+	git rebase -i -p HEAD^ &&
+	test $HEAD = $(git rev-parse HEAD)
+'
+
 test_expect_success 'preserve merges with -p' '
 	git checkout -b to-be-preserved master^ &&
 	: > unrelated-file &&
-- 
1.5.4.rc0.59.g1d10d

```

## Junio C Hamano, 2007-12-18 20:24

Subject: Re: [PATCH w/ test] rebase -p -i: handle "no changes" gracefully
Message-ID: <7vabo7zr7x.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vabo7zr7x.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <Pine.LNX.4.64.0712172100450.9446@racer.site>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Since commit 376ccb8cbb453343998e734d8a1ce79f57a4e092, unchanged
> SHA-1s are no longer mapped via $REWRITTEN.  But the updating
> phase was not prepared for the old head not being rewritten.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>
> 	On Mon, 17 Dec 2007, Junio C Hamano wrote:
>
> 	> Hmph, care to add a test to t3404?
>
> 	How about this?

Looks good.  Thanks.

```
