git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Stefan Beller <sbeller@google.com>
To: "Jakub Narębski" <jnareb@gmail.com>
Cc: Stefan Beller <stefanbeller@gmail.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>,
	Jacob Keller <jacob.keller@gmail.com>
Subject: Re: [PATCHv4] diff.c: emit moved lines with a different color
Date: Tue, 6 Sep 2016 10:03:13 -0700	[thread overview]
Message-ID: <CAGZ79kZPzEYV=gdhzXQetXoe4+1zdh67eyL-gGh9EOCSbRwzWw@mail.gmail.com> (raw)
In-Reply-To: <15618224-a9f3-bbe7-3556-8fd8aab2a2a4@gmail.com>

On Tue, Sep 6, 2016 at 7:05 AM, Jakub Narębski <jnareb@gmail.com> wrote:
> W dniu 06.09.2016 o 09:01, Stefan Beller pisze:
>
>> ---
>>
>>  * moved new data structures into struct diff_options
>>  * color.moved=bool as well as --[no-]color-moved to {dis,en}able the new feature
>>  * color.diff.movedfrom and color.diff.movedto to control the colors
>>  * added a test
> [...]
>
>> diff --git a/Documentation/config.txt b/Documentation/config.txt
>> index 0bcb679..5daf77a 100644
>> --- a/Documentation/config.txt
>> +++ b/Documentation/config.txt
>> @@ -974,14 +974,22 @@ This does not affect linkgit:git-format-patch[1] or the
>>  'git-diff-{asterisk}' plumbing commands.  Can be overridden on the
>>  command line with the `--color[=<when>]` option.
>>
>> +color.moved::
>> +     A boolean value, whether a diff should color moved lines
>> +     differently. The moved lines are searched for in the diff only.
>> +     Duplicated lines from somewhere in the project that are not
>> +     part of the diff are not colored as moved.
>> +     Defaults to true.
>
> [...]
>> diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
>> index 705a873..13b6a2a 100644
>> --- a/Documentation/diff-options.txt
>> +++ b/Documentation/diff-options.txt
>> @@ -234,6 +234,13 @@ ifdef::git-diff[]
>>  endif::git-diff[]
>>       It is the same as `--color=never`.
>>
>> +--[no-]color-moved::
>> +     Show moved blocks in a different color.
>> +ifdef::git-diff[]
>> +     It can be changed by the `diff.ui` and `color.diff`
>> +     configuration settings.
>> +endif::git-diff[]
>
> If not for `color.moved`, I would have thought that instead of adding
> new command line option `--color-moved` (and the fact that it is on
> by default), we could simply reuse duplication of code movement
> detection as a signal of stronger detection, namely "-M -M" (and also
> "-C -C" to handle copy detection) that git-blame uses...

Can you please elaborate on how you'd use that as a user?

The -M and -C options only operate on the file level, e.g.
these options are very good at things introduced via:

    git mv A B
    $EDIT B # only a little.

So these options make no sense when operating only on one
file or on many files that stay the same and only change very little.

The goal of my patch here is to improve cases like 11979b98
(2005-11-18, http.c: reorder to avoid compilation failure.)

In that case we just move code around, not necessarily across file
boundaries.

So that seems orthogonal to the -M/-C option as it operates on another
level. (file vs line)

In another email you asked whether this new approach works in the
word-by-word diff, which it unfortunately doesn't yet, but I would think
that it is the same problem (line vs word granularity)

So what I am asking here is, how would you imagine a better user interface
for what I am trying to do, or do you think I should adapt my goal?

Thanks,
Stefan

>
> --
> Jakub Narębski
>

  reply	other threads:[~2016-09-06 17:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-06  7:01 [PATCHv4] diff.c: emit moved lines with a different color Stefan Beller
2016-09-06 13:37 ` Ramsay Jones
2016-09-07 18:52   ` Junio C Hamano
2016-09-06 14:05 ` Jakub Narębski
2016-09-06 17:03   ` Stefan Beller [this message]
2016-09-06 17:51     ` Jakub Narębski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGZ79kZPzEYV=gdhzXQetXoe4+1zdh67eyL-gGh9EOCSbRwzWw@mail.gmail.com' \
    --to=sbeller@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jacob.keller@gmail.com \
    --cc=jnareb@gmail.com \
    --cc=stefanbeller@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).