On Thu, 10 Jan 2019 21:37:21 -0800, Ludovic Chabant wrote:
> # HG changeset patch
> # User Ludovic Chabant <ludo...@chabant.com>
> # Date 1547180577 28800
> #      Thu Jan 10 20:22:57 2019 -0800
> # Node ID dfda7867497e5609a03727508dc0da2cab3218a3
> # Parent  ef0e2f7224358c32b0f62b13e83e89ba2399c8cf
> extdiff: add --mode option

> +            proc = _systemdetached(curcmdline, cwd=tmproot)
> +            waitprocs.append(proc)
> +
> +    if waitprocs:
> +        with ui.timeblockedsection('extdiff'):
> +            for proc in waitprocs:
> +                proc.wait()

Maybe need to check the .gui flag of the tool. Otherwise the console
would be messed up if the tool wasn't a GUI program.

> +    :d (or nothing):    Runs the external program once and passes the
> +                        names of two directories to compare. Each
> +                        directory contains snapshots of the files before
> +                        and after the given revisions. This is the
> +                        default mode.
> +    :f:                 Runs the external program once for each file,
> +                        passing the path to the snapshots.
> +    :p:                 Modifies the 'f' mode by prompting the user
> +                        before running the external program for each
> +                        file.

(from the V1 thread)

On Thu, 10 Jan 2019 16:03:00 -0800, Ludovic Chabant wrote:
> > I don't think "--mode <char>" is good ui. I don't have nice idea, but maybe
> > it can be split into two flags (e.g. --per-file and 
> > --confirm/--interactive)?
> > 
> > And the config option can specify if the tool support directory diff, for
> > example. If the tool doesn't support directory diff, and if it's gui, spawn
> > processes per file by default.
> 
> I was actually debating with myself between the 2 ways of specifying the diff 
> mode, and eventually I settled on the --mode option. Here's the rationale 
> (although I can be easily convinced to use the alternative):
> 
> - A --mode option is easier to later extend to more ways to diff things, like 
> for example a mode where, when you pass a revision range, it will diff each 
> revision one by one (invoking the external program N times if there are N 
> revisions in the range). Different flags that may or may not be compatible 
> between each other are more confusing IMHO.

Well, I think it will produce 8 modes,
dir-or-file x revpair-or-revrage x prompt-or-not.

And we can even get rid of the dir-or-file mode from command flags by
registering two tools, one for dir-diff and the other for per-file-diff.
I don't know if that is a better idea, but we'll never use the per-file
mode if the tool had a decent support for directory diff. So it's a tool-
specific property at some level.

> - The --confirm option doesn't do anything if you don't also pass 
> --per-file...

A prompt could be shown for the directory diff. I don't think it's useful
right now, but if we had a per-revision-diff mode, it would make some sense
to show prompt to skip some revisions.

> I don't know if there are other aspects of the hg cli that have this? Now I 
> realize that I also fell short of that downside since "--mode p" doesn't do 
> anything either, but the point is that if we want something to represent "per 
> file" and "per file with prompt", 2 modes do that better than 2 flags (and I 
> could change my patch to have "p" be a mode of its own instead of modifying 
> the "f" mode).
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to