threads / patch / 40308

patcham --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Subject: [PATCH] am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

## tl;dr

3 messages between Sep 9, 2015 and Sep 9, 2015. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Johannes Schindelin· Sep 9, 2015, 09:10 UTC · lore

This is a backport of the corresponding patch to the builtin am in 2.6: 3ecc704 (am --skip/--abort: merge HEAD/ORIG_HEAD tree into index, 2015-08-19).

Reportedly, it can make a huge difference on Windows, in one case a `git rebase --skip` took 1m40s without, and 5s with, this patch.

Reported-and-suggested-by: Kim Gybels <kim.gybels@engilico.com>
Original report: https://github.com/git-for-windows/git/issues/365
Acked-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/examples/git-am.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to contrib/examples/git-am.sh +1 −2
diff --git a/contrib/examples/git-am.sh b/contrib/examples/git-am.sh
index 3b77028..dd539f1 100755
--- a/contrib/examples/git-am.sh
+++ b/contrib/examples/git-am.sh
@@ -512,7 +512,7 @@ then
 		git read-tree --reset -u $head_tree $head_tree &&
 		index_tree=$(git write-tree) &&
 		git read-tree -m -u $index_tree $head_tree
-		git read-tree $head_tree
+		git read-tree -m $head_tree
 		;;
 	,t)
 		if test -f "$dotest/rebasing"

--
https://github.com/git/git/pull/173
Johannes Schindelin· Sep 9, 2015, 11:45 UTC · re: Johannes Schindelin · lore

Re: [PATCH] am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Hi Junio,
On 2015-09-09 11:10, Johannes Schindelin wrote:
Show 13 quoted lines
> This is a backport of the corresponding patch to the builtin am in 2.6:
> 3ecc704 (am --skip/--abort: merge HEAD/ORIG_HEAD tree into index,
> 2015-08-19).
> 
> Reportedly, it can make a huge difference on Windows, in one case a `git
> rebase --skip` took 1m40s without, and 5s with, this patch.
> 
> Reported-and-suggested-by: Kim Gybels <kim.gybels@engilico.com>
> Original report: https://github.com/git-for-windows/git/issues/365
> Acked-by: Paul Tan <pyokagan@gmail.com>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  contrib/examples/git-am.sh | 2 +-
Of course this should be `git-am.sh` in the 2.5.x branch... Could you adjust that on your side?

Thanks, Dscho

Junio C Hamano· Sep 9, 2015, 21:29 UTC · re: Johannes Schindelin · lore

Re: [PATCH] am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Johannes Schindelin <johannes.schindelin@gmx.de> writes:
Show 17 quoted lines
> On 2015-09-09 11:10, Johannes Schindelin wrote:
>> This is a backport of the corresponding patch to the builtin am in 2.6:
>> 3ecc704 (am --skip/--abort: merge HEAD/ORIG_HEAD tree into index,
>> 2015-08-19).
>> 
>> Reportedly, it can make a huge difference on Windows, in one case a `git
>> rebase --skip` took 1m40s without, and 5s with, this patch.
>> 
>> Reported-and-suggested-by: Kim Gybels <kim.gybels@engilico.com>
>> Original report: https://github.com/git-for-windows/git/issues/365
>> Acked-by: Paul Tan <pyokagan@gmail.com>
>> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
>> ---
>>  contrib/examples/git-am.sh | 2 +-
>
> Of course this should be `git-am.sh` in the 2.5.x branch... Could you
> adjust that on your side?

"git am -3" is smart enough that applying this patch on a branch that contains the performance regression does the right thing without me having to think. The most time-consuming part on my part was to figure out which exact commit this change is fixing and then find out to which maintenance tracks contains that breakage.

Here is what I'll queue on top of maint-2.4 series.
Thanks.
-- >8 --
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Wed, 9 Sep 2015 09:10:07 +0000
Subject: [PATCH] am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

f8da6801 (am --skip: support skipping while on unborn branch, 2015-06-06) introduced a performance regression to "git am --skip", where it used "read-tree" to reconstruct the index from scratch without reusing the cached stat information.

This is a backport of the corresponding patch to the builtin am in 2.6: 3ecc704 (am --skip/--abort: merge HEAD/ORIG_HEAD tree into index, 2015-08-19).

Reportedly, it can make a huge difference on Windows, in one case a `git rebase --skip` took 1m40s without, and 5s with, this patch.

cf. https://github.com/git-for-windows/git/issues/365
Reported-and-suggested-by: Kim Gybels <kgybels@infogroep.be>
Acked-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 git-am.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to git-am.sh +1 −1
diff --git a/git-am.sh b/git-am.sh
index 3103c0f..4ab1f21 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -509,7 +509,7 @@ then
 		git read-tree --reset -u $head_tree $head_tree &&
 		index_tree=$(git write-tree) &&
 		git read-tree -m -u $index_tree $head_tree
-		git read-tree $head_tree
+		git read-tree -m $head_tree
 		;;
 	,t)
 		if test -f "$dotest/rebasing"
-- 
2.6.0-rc1-125-gb648220

← back to recent threads