Re: [PATCH 2/2] line-log: avoid unnecessary full tree diffs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 21, 2019, 17:29 UTC
- Message-ID
- <xmqqtvaas9zs.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <20190821110424.18184-3-szeder.dev@gmail.com>
SZEDER Gábor <szeder.dev@gmail.com> 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 of two (or more) files, we only need rename processing when a path we have been inspecting disappears, at which point it is worth spending cycles to see where the path used to be in the parent commit.
> [1] Line-level log's rename following is quite similar to 'git log > --follow path', with the notable differences that it does handle > multiple paths at once as well, and that it doesn't show the > commit performing the rename if it's an exact rename.
Yeah, it's one of the reasons why "log --follow" is not (yet) a serious "feature" but merely a "checkbox item".
> [2] This slowness might not have been apparent initially, because back > when the line-level log feature was introduced rename detection
s/introduced/&,/
> was not yet enabled by default; 12da1d1f6f (Implement line-history > search (git log -L), 2013-03-28) and 5404c116aa (diff: activate > diff.renames by default, 2016-02-25).
s/\.$/ are about 3 years apart&/ or something like that to make what follows the semicolon a full sentence?