git - 让“git gui”打破差异中的长线?
问题描述
是否有可能使 git 发出带有长行的差异以用于git gui
?
对于命令行使用,可以只更改设置core.pager
,但这不会影响git gui
.
尽管我已经找到了一个可行的解决方案并以问答方式发布了这个问题,但我希望找到能够解决以下任何缺点的解决方案:
(a)过滤器也适用于室外git gui
,可能没有必要。
(b)该fold
工具不缩进换行,影响可读性。我正在考虑类似 Emacs 的东西adaptive-wrap-mode
。
解决方案
这可以通过使用“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 上, fold 实用程序可能使用 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'
推荐阅读
- sql - SQL:更新 GROUP BY 以包含基于另一列的最大值的值
- javascript - Mocha 测试未运行“try..finally”子句
- r - 在 R 中的 ggplot2 中向折线图添加第二个图例
- ios - 检测矩形时崩溃,Swift,iOS
- ios - 为什么 SnapKit 的“makeConstraints”函数的闭包中没有“self”?
- wordpress - 访问具有特定帖子类型的所有内容(Wordpress)
- excel - 全部刷新不会更新 Excel 2016 中的可刷新 Web 查询表
- firebase - Firebase 帐户创建限制
- xpath - 带有 onclick 的图像的相对 xpath 是什么?
- javascript - 如何实现启用 Meteor Tracker 的功能?