如何在执行过滤器时确定通过gitattributes进行过滤的文件?

时间:2010-05-20 11:16:19

标签: ruby git gitattributes

我在git存储库中有一堆ruby脚本,似乎很难强制人们编写正确的缩进代码。

我还有一个小的ruby脚本,格式化为特定标准的代码,现在我想将其作为过滤器脚本运行,以便垃圾不会被提交到存储库。

echo "*.rb filter=rubyfilter" > .gitattributes
echo "[filter \"rubyfilter\"]" >> .git/config
echo "    clean = /home/rasjani/bin/rbeauty" >> .git/config
echo "    smudge = /home/rasjani/bin/rbeauty" >> .git/config

执行脏技巧git,但ruby脚本应该处理受影响的文件:

我如何/从哪里看?

1 个答案:

答案 0 :(得分:1)

GitPro Book

中所述
  

Git仅将这些设置应用于子目录或文件子集。这些特定于路径的设置称为Git属性,并在您的某个目录中的.gitattributes文件中设置

git attributes手册页提及:

  
      
  • 签出时,当指定了smudge命令时,命令从其标准输入中提供blob对象,其标准输出用于更新worktree文件。
  •   
  • 同样,clean命令用于在签入时转换worktree文件的内容。
  •   

alt text

因此,您的脚本将在结帐和提交时处理每个*.rb文件(位于.gitattributes文件所在的目录和子目录中)。

有关具体示例,请参阅此SO question 您可以使用以下方法测试自己的设置:

git checkout --force

注意:正如本SO question中所述,smudgeclean脚本只能修改文件的内容,而不知道究竟是什么他们正在处理文件