如何传递文件名参数 gitconfig diff textconv?

nyo*_*yov 7 git diff git-config

https://git.wiki.kernel.org/index.php/Textconvtextconv上的文档有简洁的措辞:

~/.gitconfig必须指示要为 textconv 驱动程序执行的命令:

[diff "<driver_name>"]
    textconv=<command>
Run Code Online (Sandbox Code Playgroud)

我找不到任何有关如何格式化需要将文件名作为位置参数传递的命令的文档。例如,我想使用以下 pdf 格式化程序命令,该命令需要破折号作为最后一个参数才能写入标准输出:

[diff "pdf"]
    textconv = pdftotext -layout "$1" -
Run Code Online (Sandbox Code Playgroud)

目前,我不得不编写自定义的单行 shell 脚本作为一种解决方法,但它们开始累积,变得有点烦人。

有没有办法不用这些脚本?or "$1"xargs 的'{}'参数约定似乎不起作用。

eMP*_*584 8

作为gitconfig缺少参数替换功能的解决方法,您可以将命令包装到 shell 调用中,如下所示

[diff "pdf"]
    textconv = sh -c 'pdftotext -layout -enc UTF-8 "$0" -'
Run Code Online (Sandbox Code Playgroud)

(在这里找到:https://gist.github.com/t-yuki/9348e5d4aa4a75a6acf9

  • 随着Windows Git包含mingw64 pdftotext,它必须是这样的: [diff "pdf"] textconv = sh -c 'pdftotext -layout -enc UTF-8 "$0" -' (2认同)