我正在创建一个涂抹/干净的git过滤器。过滤器需要知道名称 被过滤的文件,以便它可以执行一些外部操作 结果将由过滤器输出。
由于从stdin读取过滤器并写入stdout,有任何方法 获取正在过滤的文件名?
例如我想:
git blame $0 | cut -d " " -f 4-6 | sort | uniq | sort | tail -1
查找此文件中最后一次更改的日期或:
git grep -I --name-only -e "" -- $0
测试文件是否为二进制文件。
但是,我需要知道我应该使用什么作为“$0
”才能在过滤器内部进行此操作?
答案 0 :(得分:5)
来自gitattributes
manual
过滤器命令行上的序列“%f”将替换为过滤器正在处理的文件的名称。过滤器可能会在关键字替换中使用它。例如:
[过滤器“p4”]
clean = git-p4-filter --clean %f smudge = git-p4-filter --smudge %f
也许%f
就是你想要的。