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

时间:2013-06-08 23:22:44

标签: git filter

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

由于从stdin读取过滤器并写入stdout,有任何方法 获取正在过滤的文件名?

例如我想:

git blame $0  | cut -d " " -f 4-6 | sort | uniq | sort | tail -1

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

git grep -I --name-only -e "" -- $0

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

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

1 个答案:

答案 0 :(得分:5)

来自gitattributes manual

  

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

     
    

[过滤器“p4”]

   clean = git-p4-filter --clean %f
   smudge = git-p4-filter --smudge %f
  

也许%f就是你想要的。