是否可以使git发出diff并用长行包装以供git gui
使用?
对于命令行使用,您只能更改设置core.pager
,但这不会影响git gui
。
尽管我找到了可行的解决方案并以问与答的方式发布了此问题,但我希望找到解决以下缺点的解决方案:
(a)过滤器也应用在git gui
之外,这可能是不必要的。
(b) fold
工具不会缩进换行,这会增加可读性。我正在考虑类似Emacs的adaptive-wrap-mode
。
答案 0 :(得分:0)
这可以通过使用“文本转换”功能并使用fold
工具作为过滤器来实现。
必须通过两个步骤进行设置。
这可以通过运行针对存储库完成
git config diff.DRIVER.textconv 'fold -s'
或通过编辑.git/config
将其包含
[diff "DRIVER"]
textconv = fold -s
或全局
git config --global diff.DRIVER.textconv 'fold -s'
根据需要,可以将工具fold
替换为更智能的语言感知过滤器。选项-s
使空格字符折叠。
在Windows上,fold实用程序可能会使用DOS行尾,这可能会与存储库的设置冲突,从而导致diff中出现虚假的^M
字符。可以改用
sh -c 'fold "$0" | dos2unix'
sh
包装器是必需的,因为textconv协议希望指定的命令接受单个文件名作为参数,并在STDOUT上生成其输出。
设置.gitattributes
文件以包含
PATTERN diff=DRIVER
此处DRIVER
是任意驱动程序名称,PATTERN
是通配符模式,与应应用该文件的文件匹配,例如*
用于“所有文件”或*.EXT
用于具有扩展名.EXT
的文件。
例如,为了通过带有“ dos2unix”的“ fold”过滤器运行* .tex文件:
=== .gitattributes ===
*.tex diff=tex
=== .git/config ===
[diff "tex"]
textconv = sh -c 'fold "$0" | dos2unix'