git找到由涂抹/清除过滤器过滤的文件的文件名

MER*_*ERM 2 git filter

我正在创建一个涂抹/干净的git过滤器.过滤器需要知道要过滤的文件的名称,以便它可以执行一些外部操作,其结果将由过滤器输出.

由于过滤器是从stdin读取并写入stdout,有没有办法让文件名被过滤?

例如,我想:

git blame $0  | cut -d " " -f 4-6 | sort | uniq | sort | tail -1
Run Code Online (Sandbox Code Playgroud)

找出此文件中最后一次更改的日期或:

git grep -I --name-only -e "" -- $0
Run Code Online (Sandbox Code Playgroud)

测试文件是否为二进制文件.

但是,我需要知道我应该使用什么作为" $0"从过滤器内部进行此操作?

dyn*_*yng 5

gitattributes 手册

过滤器命令行上的序列"%f"将替换为过滤器正在处理的文件的名称.过滤器可能会在关键字替换中使用它.例如:

[过滤器"p4"]

   clean = git-p4-filter --clean %f
   smudge = git-p4-filter --smudge %f
Run Code Online (Sandbox Code Playgroud)

也许%f就是你想要的.