这可以通过使用“textconv”功能,使用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 上,折叠实用程序可能使用 DOS 行结尾,这可能与您的存储库设置冲突,从而导致差异中出现虚假的 ^M 字符。这可以通过使用来解决
sh -c 'fold "$0" | dos2unix'
sh 包装器是必需的,因为 textconv 协议期望指定的命令接受单个文件名作为参数,并在 STDOUT 上生成其输出。
配置 .gitattributes
设置.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'