git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Michal Privoznik <mprivozn@redhat.com>
Cc: git@vger.kernel.org, gitster@pobox.com
Subject: Re: [PATCH] config: Introduce --patience config variable
Date: Tue, 6 Mar 2012 06:49:14 -0500	[thread overview]
Message-ID: <20120306114914.GB6733@sigill.intra.peff.net> (raw)
In-Reply-To: <a87ed689ddfb06601dd639541199fc72d829bdaf.1331031473.git.mprivozn@redhat.com>

On Tue, Mar 06, 2012 at 11:59:42AM +0100, Michal Privoznik wrote:

> Some users like the patience diff more than the bare diff. However,
> specifying the '--patience' argument every time diff is to be used
> is impractical. Moreover, creating an alias doesn't play with other
> tools nice, e.g. git-show; Therefore we need a configuration variable
> to turn this on/off across whole git tools.

The idea of turning on patience diff via config makes sense to me, and
it is not a problem for plumbing tools to have patience diff on, since
patience diffs are syntactically identical to non-patience diffs. So I
think the intent is good.

A few comments on the patch itself:

> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -86,6 +86,9 @@ diff.mnemonicprefix::
>  diff.noprefix::
>  	If set, 'git diff' does not show any source or destination prefix.
>  
> +diff.patience:
> +    If set, 'git diff' will use patience algorithm.
> +

Should this be a boolean? Or should we actually have a diff.algorithm
option where you specify the algorithm you want (e.g., "diff.algorithm =
patience")? That would free us up later to more easily add new values.

In particular, I am thinking about --minimal. It is mutually exclusive
with --patience, and is simply ignored if you use patience diff.
we perhaps have "diff.algorithm" which can be one of "myers", "minimal"
(which is really myers + the minimal flag), and "patience".

Or I suppose you could think of it as "--minimal" being orthogonal to
the algorithm chosen, and it is simply that "--minimal" does nothing
(currently) with the patience algorithm.

> @@ -3202,6 +3208,9 @@ int diff_setup_done(struct diff_options *options)
>  		DIFF_OPT_SET(options, EXIT_WITH_STATUS);
>  	}
>  
> +    if (diff_patience)
> +		DIFF_XDL_SET(options, PATIENCE_DIFF);
> +
>  	return 0;

Hmm. Usually for a boolean config we would have "-1" mean "not
specified", and otherwise 0/1 for true/false. But in your case, setting
diff.patience to "false" will be the same as not setting it at all. I
think this is probably OK. "false" is the default, so you would only
want to specify it to override an earlier setting, but there is nothing
earlier than config that you could possibly be overriding.

Speaking of overriding, you may want to actually override the config
option from the command line. You probably should also add a
"--no-patience" option, so that one can turn off "diff.patience = true"
for a particular invocation.

-Peff

  reply	other threads:[~2012-03-06 11:49 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-06 10:59 [PATCH] config: Introduce --patience config variable Michal Privoznik
2012-03-06 11:49 ` Jeff King [this message]
2012-03-06 13:01   ` Thomas Rast
2012-03-06 13:15     ` [PATCH 1/2] perf: compare diff algorithms Thomas Rast
2012-03-06 13:15       ` [PATCH 2/2] Document the --histogram diff option Thomas Rast
2012-03-06 19:57         ` Junio C Hamano
2012-03-06 20:42           ` Thomas Rast
2012-03-06 19:52       ` [PATCH 1/2] perf: compare diff algorithms Junio C Hamano
2012-03-06 21:00         ` Thomas Rast
2012-03-06 21:18           ` Junio C Hamano
2012-03-06 21:41             ` Jakub Narebski
2012-03-07 12:44               ` Thomas Rast
2012-03-07 17:45                 ` Junio C Hamano
2012-03-07 18:03                 ` Jakub Narebski
2012-03-07 18:19                   ` Junio C Hamano
2012-03-10  7:13       ` René Scharfe
2012-03-06 13:30     ` [PATCH] config: Introduce --patience config variable Jeff King
2012-03-06 13:32     ` Michal Privoznik
2012-03-06 13:38       ` Matthieu Moy
2012-03-06 14:09         ` Jeff King
2012-03-07  2:57   ` Junio C Hamano
2012-03-07 11:47     ` Jeff King
2012-03-07 17:24       ` Junio C Hamano

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

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

  git send-email \
    --in-reply-to=20120306114914.GB6733@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mprivozn@redhat.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.
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).