From: Junio C Hamano <gitster@pobox.com>
To: Stefan Beller <sbeller@google.com>
Cc: "git\@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [RFC/PATCH 0/2] Color moved code differently
Date: Sun, 04 Sep 2016 15:19:58 -0700 [thread overview]
Message-ID: <xmqq60qbqpdd.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqqpookqi8k.fsf@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Sat, 03 Sep 2016 23:41:47 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> I do not think you should step outside diff_flush(). Only when
> producing textual diff, you would have to run the textual diff
> twice by going over the q twice:
>
> * The first pass would run diff_flush_patch(), which would call
> into xdiff the usual way, but the callback from xdiff would
> capture the removed lines and the added lines without making any
> output.
>
> * The second pass would run diff_flush_patch(), but the callback
> from xdiff would be called with additional information, namely,
> the removed and the added lines captured in the first pass.
> ...
> The fn_out_consume() function working in the "second pass of
> moved from/moved to mode" would inspect line[] and see if it is
> an added or a removed line, and then:
>
> - if it is an added line, and it appears as a removed line
> elsewhere in the patchset (you obtained the information in the
> first pass), you show it as "this was moved from elsewhere".
>
> - if it is a removed line, and it appears as an added line
> elsewhere in the patchset (you obtained the information in the
> first pass), you show it as "this was moved to elsewhere".
>
> Or something like that.
Actually, the first pass above ends up queuing majority of the diff
output in-core _anyway_, so it would make much more sense not to
rely on the reproducibility of xdiff machinery by not calling it
twice. Instead, I would imagine that the first pass can queue all
what it receives in the callback, then with the whole-patch picture
at hand, you can call updated fn_out_consume() yourself (instead of
letting xdiff machinery to call you), and that would become the
"second pass".
next prev parent reply other threads:[~2016-09-04 22:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-03 3:31 [RFC/PATCH 0/2] Color moved code differently Stefan Beller
2016-09-03 3:31 ` [PATCH 1/2] diff.c: emit duplicate lines with a different color Stefan Beller
2016-09-03 3:31 ` [RFC/PATCH 2/2] WIP xdiff: markup duplicates differently Stefan Beller
2016-09-03 12:25 ` Jakub Narębski
2016-09-04 5:31 ` Stefan Beller
2016-09-04 10:35 ` Jakub Narębski
2016-09-04 6:48 ` Junio C Hamano
2016-09-03 7:00 ` [RFC/PATCH 0/2] Color moved code differently Junio C Hamano
2016-09-04 5:23 ` Stefan Beller
2016-09-04 6:41 ` Junio C Hamano
2016-09-04 8:28 ` Stefan Beller
2016-09-04 22:19 ` Junio C Hamano [this message]
2016-09-04 9:57 ` Jacob Keller
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=xmqq60qbqpdd.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=sbeller@google.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).