Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Hi Eike,

On Wed, 17 Oct 2018 at 21:03:45 +0200, Guilhem Moulin wrote:
On Wed, 17 Oct 2018 at 14:05:27 +0200, Eike Rathke wrote:
For diffs I much prefer the gerrit view because it highlights changes
within changed lines, for example

https://gerrit.libreoffice.org/plugins/gitiles/core/+/9672d034b9e760f24ac9a6652ab45dee15ee260a%5E%21/
vs
https://gerrit.libreoffice.org/gitweb?p=core.git;a=commitdiff;h=9672d034b9e760f24ac9a6652ab45dee15ee260a

Would that be possible also with gitiles?

They both show marked changes now :-)

Not that I know of, and looking at the source I don't think so

https://gerrit.googlesource.com/gitiles/+/master/java/com/google/gitiles/HtmlDiffFormatter.java#142

I patched this file to make use of Neil Fraser's ‘diff-match-patch’
library and find the array of differences to mark (with semantic
cleanups so the result is readable).  That array is also what's used to
compute the Levenshtein distance, so it should be quite accurate ;-)

On the other hand, gitweb's algorithm is rather dumb and crude.  Only
edits with the same number of deleted & inserted lines are considered;
the marked part is what's left after removing the longest common prefix
& suffix between a removed line is its corresponding insertion.  It's
therefore not possible to have more than one mark per line, and code
reflowing might not marked properly.

Complexity wise gitweb's algorithm has a lower worst case bound (linear
vs. quadratic), but it shouldn't matter in practice as in our case the
marks don't need to be optimal, and the algorithm will give up and
return a sub-optimal solution if it hasn't found the best one under
50ms.

Unfortunately that change is most likely not upstreamable since I had to
abuse the JGit API quite heavily… :-/

-- 
Guilhem.

Attachment: signature.asc
Description: PGP signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.