I've talked about this quite a bit on the list already. The idea is to improve ugly diffs like @@ -231,6 +231,9 @@ if (!defined $initial_reply_to && $prompting) { } if (!$smtp_server) { + $smtp_server = $repo->config('sendemail.smtpserver'); +} +if (!$smtp_server) { foreach (qw( /usr/sbin/sendmail /usr/lib/sendmail )) { if (-x $_) { $smtp_server = $_; by feeding clues from the surrounding lines (namely their patterns of indentation and blank lines) into a heuristic that more often produces the diffs that users would rather see, like --- a/9c572b21dd090a1e5c5bb397053bf8043ffe7fb4:git-send-email.perl +++ b/6dcfa306f2b67b733a7eb2d7ded1bc9987809edb:git-send-email.perl @@ -230,6 +230,9 @@ if (!defined $initial_reply_to && $prompting) { $initial_reply_to =~ s/(^\s+|\s+$)//g; } +if (!$smtp_server) { + $smtp_server = $repo->config('sendemail.smtpserver'); +} if (!$smtp_server) { foreach (qw( /usr/sbin/sendmail /usr/lib/sendmail )) { if (-x $_) { See the last commit's log message for a very detailed explanation of the heuristic, how it was optimized, and how you can get involved to make sure that the heuristic also works well for your favorite language. When tested against a corpus of 2700 diffs that I optimized by hand, this heuristic gets a "wrong" answer only about 1.7% as frequently as the current default Git algorithm and only about 5.3% as often as `git diff --compaction-heuristic`. (Though please don't treat these numbers as final; I want to verify them again first.) For now the new algorithm has to be enabled explicitly using either `--indent-heuristic` or `git config diff.indentheuristic true`. Michael Haggerty (8): xdl_change_compact(): rename some local variables for clarity xdl_change_compact(): clarify code xdl_change_compact(): rename i to end xdl_change_compact(): do one final shift or the other, not both xdl_change_compact(): fix compaction heuristic to adjust io xdl_change_compact(): keep track of the earliest end is_blank_line: take a single xrecord_t as argument diff: improve positioning of add/delete blocks in diffs Documentation/diff-options.txt | 6 +- diff.c | 11 + git-add--interactive.perl | 5 +- xdiff/xdiff.h | 1 + xdiff/xdiffi.c | 458 ++++++++++++++++++++++++++++++++++------- 5 files changed, 409 insertions(+), 72 deletions(-) -- 2.8.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html