threads / discuss / 42865

format-patch with pager.format-patch=true gets very confused

Subject: format-patch with pager.format-patch=true gets very confused

## tl;dr

3 messages between Jul 17, 2016 and Jul 17, 2016.

replies: 2people: 2as markdown or json

Josh Triplett· Jul 17, 2016, 02:56 UTC · lore

git-config(1) documents the ability to enable or disable the pager (or set a command-specific pager) for any command by setting pager.<cmd>=true. For most commands, this seems to work as expected. However, setting pager.format-patch=true (or setting it to any specific pager) breaks badly: the pager spawns, with no output in it, and the pager doesn't respond to keystrokes (which makes it difficult to quit).

I think this may occur because format-patch's "reopen_stdout" interacts badly with the pager.

I think it makes sense for "format-patch --stdout" to respect pager.format-patch, but for format-patch *without* stdout to ignore pager.* and *never* spawn a pager, given that its only output (the list of patch files) goes to "realstdout".

- Josh Triplett
Johannes Schindelin· Jul 17, 2016, 12:41 UTC · re: Josh Triplett · lore

Re: format-patch with pager.format-patch=true gets very confused

Hi Josh,
On Sat, 16 Jul 2016, Josh Triplett wrote:
Show 14 quoted lines
> git-config(1) documents the ability to enable or disable the pager (or
> set a command-specific pager) for any command by setting
> pager.<cmd>=true.  For most commands, this seems to work as expected.
> However, setting pager.format-patch=true (or setting it to any specific
> pager) breaks badly: the pager spawns, with no output in it, and the
> pager doesn't respond to keystrokes (which makes it difficult to quit).
> 
> I think this may occur because format-patch's "reopen_stdout" interacts
> badly with the pager.
> 
> I think it makes sense for "format-patch --stdout" to respect
> pager.format-patch, but for format-patch *without* stdout to ignore
> pager.* and *never* spawn a pager, given that its only output (the list
> of patch files) goes to "realstdout".

As per http://article.gmane.org/gmane.comp.version-control.git/299451, the `js/log-to-diffopt-file` patch series will be merged to `master` soon. This patch series avoids the reopen() altogether and should fix the problem you experience.

Since it is already in `next`, it should be relatively easy for you to build and confirm. Would you kindly do that?

Thanks, Johannes

Josh Triplett· Jul 17, 2016, 19:20 UTC · re: Johannes Schindelin · lore

Re: format-patch with pager.format-patch=true gets very confused

On Sun, Jul 17, 2016 at 02:41:48PM +0200, Johannes Schindelin wrote:
Show 26 quoted lines
> Hi Josh,
> 
> On Sat, 16 Jul 2016, Josh Triplett wrote:
> 
> > git-config(1) documents the ability to enable or disable the pager (or
> > set a command-specific pager) for any command by setting
> > pager.<cmd>=true.  For most commands, this seems to work as expected.
> > However, setting pager.format-patch=true (or setting it to any specific
> > pager) breaks badly: the pager spawns, with no output in it, and the
> > pager doesn't respond to keystrokes (which makes it difficult to quit).
> > 
> > I think this may occur because format-patch's "reopen_stdout" interacts
> > badly with the pager.
> > 
> > I think it makes sense for "format-patch --stdout" to respect
> > pager.format-patch, but for format-patch *without* stdout to ignore
> > pager.* and *never* spawn a pager, given that its only output (the list
> > of patch files) goes to "realstdout".
> 
> As per http://article.gmane.org/gmane.comp.version-control.git/299451,
> the `js/log-to-diffopt-file` patch series will be merged to `master` soon.
> This patch series avoids the reopen() altogether and should fix the
> problem you experience.
> 
> Since it is already in `next`, it should be relatively easy for you to
> build and confirm. Would you kindly do that?
I can confirm that that fixes the problem.  Thanks!
- Josh Triplett

← back to recent threads