如何将调用复杂grep命令的自定义diff脚本内联到git config中
如何将调用复杂grep命令的自定义diff脚本内联到git config中
当然可以实现!其实Git完全支持把自定义diff的逻辑直接内联到配置文件里,不用单独维护外部脚本,我给你一步步拆解怎么做:
首先,先明确你的需求:用grep过滤掉PO文件里的注释行和几个无关的元数据字段(比如创建日期、修订日期、最后翻译者),只保留实际翻译内容的差异。那我们可以把这个grep命令和Git的diff能力结合起来,直接写到配置里。
你只需要在你的.gitconfig(项目内的.git/config或者全局的~/.gitconfig都可以)里添加这段配置:
[diff "podiff"] command = grep -Ev '^#:|^\"POT-Creation-Date|^\"PO-Revision-Date|^\"Last-Translator' \"$1\" | git diff --no-index -- /dev/null -
这里要额外说一下后面的git diff --no-index -- /dev/null -:因为Git的自定义diff命令要求输出标准的diff格式内容,单纯用grep过滤只能输出保留的行,Git没法识别成合法的diff结果。通过把过滤后的内容和/dev/null做对比,就能生成Git能识别的diff输出啦。
接下来,别忘了在项目的.gitattributes文件里加上一行规则,让Git知道处理PO文件时用我们定义的podiff规则:
*.po diff=podiff
这样一来,你就不用再单独维护那个podiff脚本文件了,所有逻辑都内联在配置里,还能跟着项目一起版本控制(把项目内的.git/config或者.gitattributes提交到仓库就行)。你可以测试一下:修改PO文件里的元数据字段,然后执行git diff,那些无关的元数据变更就不会显示出来,只会展示实际翻译内容的差异,完全符合你的需求~
备注:内容来源于stack exchange,提问作者Zsar
相关产品推荐
相关产品推荐

