From: Stefan Beller <sbeller@google.com>
To: gitster@pobox.com, peff@peff.net, chriscool@tuxfamily.org
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>
Subject: [RFC/PATCH 00/17]
Date: Mon, 12 Sep 2016 21:45:56 -0700 [thread overview]
Message-ID: <20160913044613.1037-1-sbeller@google.com> (raw)
About a week ago, I started experimenting to add a new functionality to the
diff machinery: We want to color moved lines differently! This will aid developers
to review patches such as the patch "Move libified code from builtin/apply.c to apply.{c,h}"
Or a smaller example:
git show 11979b9
In the original patch series I just used the xdl diff machinery multiple times
to obtain the output for a multi pass algorithm I need for this coloring.
This was one of Junios main concerns (We have to rely on the xdl stuff to
yield the same output in the two passes).
This brings in another approach:
* run the xdl stuff only once
* In case we do not ask for coloring moves, put it out immediately
(small detour: we do not use fprintf/fputs directly but we channel
all output through the emit_line_* interface)
* When asking for coloring moves: buffer all its output for now.
Feed the line by line into the move detection algorithm.
* then output it all at once using the information from the move detection
to recolor moves while outputting.
While viewing the output of 11979b9 again, I notice a small bug in the proposal,
but I'd rather be asking for review of the whole design approach.
Thanks,
Stefan
Stefan Beller (17):
diff: move line ending check into emit_hunk_header
diff: emit_{add, del, context}_line to increase {pre,post}image line
count
diff.c: drop tautologous condition in emit_line_0
diff.c: factor out diff_flush_patch_all_file_pairs
diff.c: emit_line_0 can handle no color setting
diff.c: convert fn_out_consume to use emit_line_*
diff.c: convert builtin_diff to use emit_line_*
diff.c: convert emit_rewrite_diff to use emit_line_*
diff.c: convert emit_rewrite_lines to use emit_line_*
submodule.c: convert show_submodule_summary to use emit_line_fmt
diff.c: convert emit_binary_diff_body to use emit_line_*
diff.c: convert show_stats to use emit_line_*
diff.c: convert word diffing to use emit_line_*
diff.c: convert diff_flush to use emit_line_*
diff.c: convert diff_summary to use emit_line_*
diff: buffer output in emit_line_0
diff.c: color moved lines differently
Documentation/config.txt | 12 +-
Documentation/diff-options.txt | 7 +
contrib/completion/git-completion.bash | 2 +
diff.c | 666 +++++++++++++++++++++++----------
diff.h | 35 +-
submodule.c | 42 +--
submodule.h | 3 +-
t/t4015-diff-whitespace.sh | 229 ++++++++++++
8 files changed, 760 insertions(+), 236 deletions(-)
--
2.10.0.21.g1da280f.dirty
next reply other threads:[~2016-09-13 4:46 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-13 4:45 Stefan Beller [this message]
2016-09-13 4:45 ` [RFC/PATCH 01/17] diff: move line ending check into emit_hunk_header Stefan Beller
2016-09-13 14:42 ` René Scharfe
2016-09-13 22:40 ` Stefan Beller
2016-09-13 4:45 ` [RFC/PATCH 02/17] diff: emit_{add, del, context}_line to increase {pre,post}image line count Stefan Beller
2016-09-13 4:45 ` [RFC/PATCH 03/17] diff.c: drop tautologous condition in emit_line_0 Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 04/17] diff.c: factor out diff_flush_patch_all_file_pairs Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 05/17] diff.c: emit_line_0 can handle no color setting Stefan Beller
2016-09-13 22:51 ` Junio C Hamano
2016-09-13 4:46 ` [RFC/PATCH 06/17] diff.c: convert fn_out_consume to use emit_line_* Stefan Beller
2016-09-13 22:56 ` Junio C Hamano
2016-09-13 4:46 ` [RFC/PATCH 07/17] diff.c: convert builtin_diff " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 08/17] diff.c: convert emit_rewrite_diff " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 09/17] diff.c: convert emit_rewrite_lines " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 10/17] submodule.c: convert show_submodule_summary to use emit_line_fmt Stefan Beller
2016-09-13 23:02 ` Junio C Hamano
2016-09-13 23:09 ` Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 11/17] diff.c: convert emit_binary_diff_body to use emit_line_* Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 12/17] diff.c: convert show_stats " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 13/17] diff.c: convert word diffing " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 14/17] diff.c: convert diff_flush " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 15/17] diff.c: convert diff_summary " Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 16/17] diff: buffer output in emit_line_0 Stefan Beller
2016-09-13 23:06 ` Junio C Hamano
2016-09-13 23:28 ` Stefan Beller
2016-09-13 23:32 ` Junio C Hamano
2016-09-13 23:42 ` Stefan Beller
2016-09-13 4:46 ` [RFC/PATCH 17/17] diff.c: color moved lines differently Stefan Beller
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=20160913044613.1037-1-sbeller@google.com \
--to=sbeller@google.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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).