Skip to contentSkip to conversation

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

DISCUSSION Josh Triplett 2 participants 3 messages Jul 17, 2016

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

Hi Josh,

Quoted 7 lines · Josh Triplett

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).

Quoted 7 lines

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

#2 lore raw
Quoted 19 lines · Johannes Schindelin

Hi Josh,

Quoted 7 lines · Josh Triplett

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).

Quoted 7 lines

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".

Quoted 7 lines

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