2

我在 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​​ 脚本应该处理受影响的文件:

我如何/从哪里查找这些?

4

1 回答 1

1

GitPro 书中所述

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

git attributes手册页提到:

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

替代文字

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

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

git checkout --force

注意:如this SO questionsmudge中所述,clean脚本只能修改文件的内容,而不知道它们正在处理的确切文件。

于 2010-05-20T11:40:16.277 回答