darcs

Issue 1228 optionally disable 'Hit return to move on' in --diff-command and --external-merge

Title optionally disable 'Hit return to move on' in --diff-command and --external-merge
Priority bug Status resolved
Milestone Resolved in 2.8.0
Superseder Nosy List SamB, darcs-devel, dmitry.kurochkin, jaredj, kowey, mndrix, twb
Assigned To
Topics ProbablyEasy, UI

Created on 2008-11-14.07:43:55 by twb, last changed 2012-03-24.16:52:24 by noreply.

Messages
msg6672 (view) Author: twb Date: 2008-11-14.07:43:52
I don't understand why there is a pause before the first wdiff is run.

    $ darcs diff --diff-command 'wdiff -3 %1 %2' .bash_profile
    Running command 'wdiff -3 old-Preferences/.bash_profile new-Preferences/.bash_profile'
    Hit return to move on...

More generally, I'd like to be able to tell darcs not to pause after
each --diff-command or --external-merge invocation.

It would also be useful to tell darcs whether the --diff-command or
--external-merge is recursive, or needs to be called on individual
files.
msg6849 (view) Author: kowey Date: 2008-12-21.17:22:17
The 'Hit return to move on' is to cope with (graphical) tools that exit
immediately rather than when the graphical tool itself exits.  As Trent says, it
might be nice to be able to disable this behaviour, perhaps with an environment
variable?
msg7374 (view) Author: SamB Date: 2009-03-02.01:02:41
I actually need this to write the test for #189 -- that is, I need a way to make
the whole operation fail without user intervention when the command invoked by
--external-merge fails. Otherwise, the test just hangs.
msg7377 (view) Author: kowey Date: 2009-03-02.08:13:25
On Mon, Mar 02, 2009 at 01:02:45 -0000, Samuel Bronson wrote:
> I actually need this to write the test for #189 -- that is, I need a way to make
> the whole operation fail without user intervention when the command invoked by
> --external-merge fails. Otherwise, the test just hangs.

We have a trick for 'hitting Enter' in test scripts (see
tests/toolbox.sh).  Would it be relevant here?
msg7382 (view) Author: SamB Date: 2009-03-02.16:44:55
On Mon, Mar 2, 2009 at 3:13 AM, Eric Kow <bugs@darcs.net> wrote:
>
> Eric Kow <kowey@darcs.net> added the comment:
>
> On Mon, Mar 02, 2009 at 01:02:45 -0000, Samuel Bronson wrote:
>> I actually need this to write the test for #189 -- that is, I need a way to make
>> the whole operation fail without user intervention when the command invoked by
>> --external-merge fails. Otherwise, the test just hangs.
>
> We have a trick for 'hitting Enter' in test scripts (see
> tests/toolbox.sh).  Would it be relevant here?

No, that won't really help. The output from this portion of the test
(I obviously haven't written a dummy merge tool yet ;-) is:

# try to merge them with --external-merge
cd lhc
darcs pull -a ../jhc --external-merge='xxdiff -m -O -M %o %1 %a %2'
Pulling from "/home/naesten/hacking/haskell/darcs/work/bugs/jhc"...
Backing up ./src/Foo(-darcs-backup0)
We have conflicts in the following files:
./src/Foo
Merging file ./src/Foo by hand.
Running command 'xxdiff -m -O -M /tmp/merged/./src/Foo
/tmp/version1/./src/Foo /tmp/ancestor/./src/Foo
/tmp/version2/./src/Foo'
External merge command exited with ExitFailure 2
Hit return to move on, ^C to abort the whole operation...

And I certainly don't want it to move on in that situation, since
that's exactly the sort of situation I want the test to fail in.
(Though my dummy merge tool should report which inputs were missing,
unlike xxdiff.)
msg7383 (view) Author: kowey Date: 2009-03-02.17:40:44
Marking ProbablyEasy

Just need a UI suggestion for this.  Either a flag pair --pause-for-gui
--no-pause-for-gui (for example) or an environment variable should do.  Do-er
decides likely (though I'll probably poll darcs-users to make sure there aren't
any vehement objections... carefully avoiding the ensuing bikeshed :-D)
msg15349 (view) Author: noreply Date: 2012-03-16.23:03:04
The following patch sent by Michael Hendricks <michael@ndrix.org> updated issue issue1228 with
status=has-patch

* Resolve issue1228: Add --pause-for-gui to diff, pull and apply 
Ignore-this: 7db469b6753ee4b4be0bdefb6702d6d7

When using an external diff tool via '--diff-command' or an
external merge tool via '--external-merge', the current behavior
assumes the tool is a GUI which requires darcs to pause (asking
the user to press Enter) before deleting any temporary files.

This patch leaves the default behavior as described above, but
provides an option --no-pause-for-gui which skips the "Press
Enter" prompt.  This option is particularly helpful for external
diff tools (such as colordiff or wdiff) which produce output
before exiting.

Because the desired pause behavior is a function of the
diff/merge tool, this is implemented as a command line option
(like --diff-command and --external-merge) instead of an
environment variable. This lets one specify the pause behavior in
the same way as one specifies the tool.
msg15398 (view) Author: noreply Date: 2012-03-24.16:52:23
The following patch sent by Michael Hendricks <michael@ndrix.org> updated issue issue1228 with
status=resolved;resolvedin=2.8.0 HEAD

* Resolve issue1228: Add --pause-for-gui to diff, pull and apply 
Ignore-this: 7db469b6753ee4b4be0bdefb6702d6d7

When using an external diff tool via '--diff-command' or an
external merge tool via '--external-merge', the current behavior
assumes the tool is a GUI which requires darcs to pause (asking
the user to press Enter) before deleting any temporary files.

This patch leaves the default behavior as described above, but
provides an option --no-pause-for-gui which skips the "Press
Enter" prompt.  This option is particularly helpful for external
diff tools (such as colordiff or wdiff) which produce output
before exiting.

Because the desired pause behavior is a function of the
diff/merge tool, this is implemented as a command line option
(like --diff-command and --external-merge) instead of an
environment variable. This lets one specify the pause behavior in
the same way as one specifies the tool.
History
Date User Action Args
2008-11-14 07:43:55twbcreate
2008-12-21 17:22:22koweysetstatus: unread -> unknown
topic: + UI
title: Confusing pause with darcs diff --diff-command 'foo %1 %2' bar -> wish: optionally disable 'Hit return to move on' in --diff-command and --external-merge
nosy: kowey, dagit, simon, twb, thorkilnaur, dmitry.kurochkin
messages: + msg6849
priority: wishlist
2009-03-02 01:02:45SamBsetpriority: wishlist -> bug
nosy: + SamB
messages: + msg7374
title: wish: optionally disable 'Hit return to move on' in --diff-command and --external-merge -> optionally disable 'Hit return to move on' in --diff-command and --external-merge
2009-03-02 08:13:28koweysetnosy: kowey, dagit, SamB, simon, twb, thorkilnaur, dmitry.kurochkin
messages: + msg7377
2009-03-02 16:44:58SamBsetnosy: kowey, dagit, SamB, simon, twb, thorkilnaur, dmitry.kurochkin
messages: + msg7382
2009-03-02 17:40:50koweysettopic: + ProbablyEasy
nosy: + jaredj
messages: + msg7383
2009-08-10 23:51:41adminsetnosy: - dagit
2009-08-18 09:23:44koweysetstatus: unknown -> needs-implementation
nosy: kowey, SamB, simon, twb, thorkilnaur, jaredj, dmitry.kurochkin
2009-08-25 17:34:32adminsetnosy: + darcs-devel, - simon
2009-08-27 14:26:16adminsetnosy: kowey, darcs-devel, SamB, twb, thorkilnaur, jaredj, dmitry.kurochkin
2010-03-31 13:13:47koweysetnosy: - thorkilnaur
2012-02-23 22:00:20mndrixsetnosy: + mndrix
2012-03-16 23:03:05noreplysetstatus: needs-implementation -> has-patch
messages: + msg15349
2012-03-24 16:52:24noreplysetstatus: has-patch -> resolved
messages: + msg15398
resolvedin: 2.8.0