format-patch with pager.format-patch=true gets very confused
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
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
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,
thejs/log-to-diffopt-filepatch series will be merged tomastersoon. This patch series avoids thereopen()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