* [PATCH] diff: resurrect XDF_NEED_MINIMAL with --minimal
@ 2011-10-02 5:04 Junio C Hamano
2011-10-03 12:38 ` Jonathan Nieder
0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2011-10-02 5:04 UTC (permalink / raw)
To: git; +Cc: René Scharfe
Earlier, 582aa00 (git diff too slow for a file, 2010-05-02)
unconditionally dropped XDF_NEED_MINIMAL option from the internal xdiff
invocation to help performance on pathological cases, while hinting that a
follow-up patch could reintroduce it with "--minimal" option from the
command line.
Make it so.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
* This together with René's c5aa906 (Revert removal of multi-match
discard heuristic in 27af01, 2011-09-25) on top of v1.7.7 seems to give
identical diff output as v1.7.1 (e.g. "git diff-tree -p v2.6.39 v3.0"
in the kernel repository, with "--minimal").
diff.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/diff.c b/diff.c
index 93ef9a2..34a88db 100644
--- a/diff.c
+++ b/diff.c
@@ -3511,6 +3511,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
}
else if (!strcmp(arg, "--abbrev"))
options->abbrev = DEFAULT_ABBREV;
+ else if (!strcmp(arg, "--minimal"))
+ DIFF_XDL_SET(options, NEED_MINIMAL);
+ else if (!strcmp(arg, "--no-minimal"))
+ DIFF_XDL_CLR(options, NEED_MINIMAL);
else if (!prefixcmp(arg, "--abbrev=")) {
options->abbrev = strtoul(arg + 9, NULL, 10);
if (options->abbrev < MINIMUM_ABBREV)
--
1.7.7
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] diff: resurrect XDF_NEED_MINIMAL with --minimal
2011-10-02 5:04 [PATCH] diff: resurrect XDF_NEED_MINIMAL with --minimal Junio C Hamano
@ 2011-10-03 12:38 ` Jonathan Nieder
2011-10-03 13:04 ` Tay Ray Chuan
0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Nieder @ 2011-10-03 12:38 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, René Scharfe, Tay Ray Chuan
Junio C Hamano wrote:
> * This together with René's c5aa906 (Revert removal of multi-match
> discard heuristic in 27af01, 2011-09-25) on top of v1.7.7 seems to give
> identical diff output as v1.7.1 (e.g. "git diff-tree -p v2.6.39 v3.0"
> in the kernel repository, with "--minimal").
Very neat.
> --- a/diff.c
> +++ b/diff.c
> @@ -3511,6 +3511,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
> }
> else if (!strcmp(arg, "--abbrev"))
> options->abbrev = DEFAULT_ABBREV;
> + else if (!strcmp(arg, "--minimal"))
> + DIFF_XDL_SET(options, NEED_MINIMAL);
> + else if (!strcmp(arg, "--no-minimal"))
> + DIFF_XDL_CLR(options, NEED_MINIMAL);
> else if (!prefixcmp(arg, "--abbrev=")) {
I think this would fit well near --patience (the "xdiff options"
section), instead of hidden between the unsticked and sticked forms of
--abbrev. ;-)
Like this:
diff --git i/Documentation/diff-options.txt w/Documentation/diff-options.txt
index b620b3af..4d87256e 100644
--- i/Documentation/diff-options.txt
+++ w/Documentation/diff-options.txt
@@ -48,6 +48,10 @@ endif::git-format-patch[]
--patience::
Generate a diff using the "patience diff" algorithm.
+--minimal::
+ Spend extra time to make sure the smallest possible
+ diff is produced.
+
--stat[=<width>[,<name-width>[,<count>]]]::
Generate a diffstat. You can override the default
output width for 80-column terminal by `--stat=<width>`.
diff --git i/diff.c w/diff.c
index fcc00780..2282f86f 100644
--- i/diff.c
+++ w/diff.c
@@ -3393,6 +3393,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
DIFF_XDL_SET(options, IGNORE_WHITESPACE_AT_EOL);
else if (!strcmp(arg, "--patience"))
DIFF_XDL_SET(options, PATIENCE_DIFF);
+ else if (!strcmp(arg, "--minimal"))
+ DIFF_XDL_SET(options, NEED_MINIMAL);
+ else if (!strcmp(arg, "--no-minimal"))
+ DIFF_XDL_CLR(options, NEED_MINIMAL);
else if (!strcmp(arg, "--histogram"))
DIFF_XDL_SET(options, HISTOGRAM_DIFF);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] diff: resurrect XDF_NEED_MINIMAL with --minimal
2011-10-03 12:38 ` Jonathan Nieder
@ 2011-10-03 13:04 ` Tay Ray Chuan
0 siblings, 0 replies; 3+ messages in thread
From: Tay Ray Chuan @ 2011-10-03 13:04 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: Junio C Hamano, git, René Scharfe
On Mon, Oct 3, 2011 at 8:38 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Thanks for the Cc, Johnathan.
> Junio C Hamano wrote:
>
>> * This together with René's c5aa906 (Revert removal of multi-match
>> discard heuristic in 27af01, 2011-09-25) on top of v1.7.7 seems to give
>> identical diff output as v1.7.1 (e.g. "git diff-tree -p v2.6.39 v3.0"
>> in the kernel repository, with "--minimal").
>
> Very neat.
Interesting. Clearly there is more than just the multi-match discard
heuristic in (xdl_clean_mmatch() and xdl_cleanup_records()).
> diff --git i/diff.c w/diff.c
> index fcc00780..2282f86f 100644
> --- i/diff.c
> +++ w/diff.c
> @@ -3393,6 +3393,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
> DIFF_XDL_SET(options, IGNORE_WHITESPACE_AT_EOL);
> else if (!strcmp(arg, "--patience"))
> DIFF_XDL_SET(options, PATIENCE_DIFF);
> + else if (!strcmp(arg, "--minimal"))
> + DIFF_XDL_SET(options, NEED_MINIMAL);
> + else if (!strcmp(arg, "--no-minimal"))
> + DIFF_XDL_CLR(options, NEED_MINIMAL);
> else if (!strcmp(arg, "--histogram"))
> DIFF_XDL_SET(options, HISTOGRAM_DIFF);
>
>
That's an improvement, but it would be even better if it was placed
above the --<strategy> options, instead of being placed between them.
--
Cheers,
Ray Chuan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-10-03 13:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-02 5:04 [PATCH] diff: resurrect XDF_NEED_MINIMAL with --minimal Junio C Hamano
2011-10-03 12:38 ` Jonathan Nieder
2011-10-03 13:04 ` Tay Ray Chuan
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 NNTP newsgroup(s).