Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-23 Thread SZEDER Gábor
On Thu, Aug 22, 2019 at 10:41:58AM +0200, SZEDER Gábor wrote: > On Wed, Aug 21, 2019 at 07:35:15PM +0200, SZEDER Gábor wrote: > Subject: [PATCH 3/2] WIP line-log: stop diff-ing after first TREESAME merge > parent > # linux.git, ~7% of all commits are merges > $ time ~/src/git/git --no-pager l

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-22 Thread Derrick Stolee
On 8/22/2019 12:26 PM, SZEDER Gábor wrote: > On Thu, Aug 22, 2019 at 09:01:44AM -0700, Junio C Hamano wrote: >> SZEDER Gábor writes: >> >>> Well, that fruit hung much lower than I though, just look at the size >>> of the WIP patch below. I just hope that there are no unexpected >>> surprises, but

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-22 Thread SZEDER Gábor
On Thu, Aug 22, 2019 at 09:01:44AM -0700, Junio C Hamano wrote: > SZEDER Gábor writes: > > > Well, that fruit hung much lower than I though, just look at the size > > of the WIP patch below. I just hope that there are no unexpected > > surprises, but FWIW it produces the exact same output for al

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-22 Thread Junio C Hamano
SZEDER Gábor writes: > Well, that fruit hung much lower than I though, just look at the size > of the WIP patch below. I just hope that there are no unexpected > surprises, but FWIW it produces the exact same output for all files up > to 't/t5515' in v2.23.0 as the previous patch. > > Can't wait

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-22 Thread Derrick Stolee
On 8/22/2019 4:41 AM, SZEDER Gábor wrote: > On Wed, Aug 21, 2019 at 07:35:15PM +0200, SZEDER Gábor wrote: >> So line-level log clearly computes a lot less diffs than >> '--full-history', though still about 50% more than a regular >> pathspec-limited history traversal. Looking at the commit-parent

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-22 Thread SZEDER Gábor
On Wed, Aug 21, 2019 at 07:35:15PM +0200, SZEDER Gábor wrote: > So line-level log clearly computes a lot less diffs than > '--full-history', though still about 50% more than a regular > pathspec-limited history traversal. Looking at the commit-parent > pairs in the output, it appears that the diff

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-21 Thread Derrick Stolee
On 8/21/2019 1:35 PM, SZEDER Gábor wrote: > On Wed, Aug 21, 2019 at 11:53:28AM -0400, Derrick Stolee wrote: >> On 8/21/2019 7:04 AM, SZEDER Gábor wrote: >>> With rename detection enabled the line-level log is able to trace the >>> evolution of line ranges across whole-file renames [1]. Alas, to >>

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-21 Thread SZEDER Gábor
On Wed, Aug 21, 2019 at 11:53:28AM -0400, Derrick Stolee wrote: > On 8/21/2019 7:04 AM, SZEDER Gábor wrote: > > With rename detection enabled the line-level log is able to trace the > > evolution of line ranges across whole-file renames [1]. Alas, to > > achieve that it uses the diff machinery ver

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-21 Thread Junio C Hamano
SZEDER Gábor writes: > So basically the line-level log computes a full tree diff for each > commit-parent pair in step (1) to be used for rename detection in step > (4) in the off chance that an interesting path is missing from the > parent. Good explanation. As we are not supporting swapping o

Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-21 Thread Derrick Stolee
On 8/21/2019 7:04 AM, SZEDER Gábor wrote: > With rename detection enabled the line-level log is able to trace the > evolution of line ranges across whole-file renames [1]. Alas, to > achieve that it uses the diff machinery very inefficiently, making the > operation very slow [2]. And since rename

[PATCH 2/2] line-log: avoid unnecessary full tree diffs

2019-08-21 Thread SZEDER Gábor
With rename detection enabled the line-level log is able to trace the evolution of line ranges across whole-file renames [1]. Alas, to achieve that it uses the diff machinery very inefficiently, making the operation very slow [2]. And since rename detection is enabled by default, the line-level l