我在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脚本应该处理受影响的文件:
我如何/从哪里看?
答案 0 :(得分:1)
Git仅将这些设置应用于子目录或文件子集。这些特定于路径的设置称为Git属性,并在您的某个目录中的.gitattributes文件中设置
git attributes
手册页提及:
- 签出时,当指定了smudge命令时,命令从其标准输入中提供blob对象,其标准输出用于更新worktree文件。
- 同样,clean命令用于在签入时转换worktree文件的内容。
因此,您的脚本将在结帐和提交时处理每个*.rb
文件(位于.gitattributes
文件所在的目录和子目录中)。
有关具体示例,请参阅此SO question 您可以使用以下方法测试自己的设置:
git checkout --force
注意:正如本SO question中所述,smudge
和clean
脚本只能修改文件的内容,而不知道究竟是什么他们正在处理文件。