On Mon, Sep 5, 2016 at 6:09 PM, Jacob Keller <jacob.kel...@gmail.com> wrote:
> On Mon, Sep 5, 2016 at 11:57 AM, Junio C Hamano <gits...@pobox.com> wrote:
>> Stefan Beller <stefanbel...@gmail.com> writes:
>>> diff --git a/Documentation/config.txt b/Documentation/config.txt
>>> index 0bcb679..f4f51c2 100644
>>> --- a/Documentation/config.txt
>>> +++ b/Documentation/config.txt
>>> @@ -980,8 +980,9 @@ color.diff.<slot>::
>>> of `context` (context text - `plain` is a historical synonym),
>>> `meta` (metainformation), `frag`
>>> (hunk header), 'func' (function in hunk header), `old` (removed
>>> - `new` (added lines), `commit` (commit headers), or `whitespace`
>>> - (highlighting whitespace errors).
>>> + `new` (added lines), `commit` (commit headers), `whitespace`
>>> + (highlighting whitespace errors), `moved-old` (removed lines that
>>> + reappear), `moved-new` (added lines that were removed elsewhere).
>> Could we have a config to disable this rather costly new feature,
> That seems entirely reasonable, though we *do* have a configuration
> for disabling color altogether.. is there any numbers on how much more
> this costs to compute?
This new coloring is linear to the size of the patch, i.e. O(number of
added/removed lines) in memory and for computational efforts I'd
think it is O(n log n) as inserting into the hashmap is an amortized
>>> +static struct hashmap *duplicates_added;
>>> +static struct hashmap *duplicates_removed;
>>> +static int hash_previous_line_added;
>>> +static int hash_previous_line_removed;
>> I think these should be added as new fields to diff_options
> Agreed, those seem like good choices for diff_options.