【发布时间】:2015-01-13 10:09:47
【问题描述】:
我是 git hooks 的新手。我今天开始写一个预提交钩子。下面是我的钩子,它检查文件中的提升、警报、尾随空格等。
#!/usr/bin/env ruby
regex = Regexp.union(/raise/, /puts/, /alert/, /console.log/, /[\s\t]+$/)
folder_path =`git rev-parse --show-toplevel`
`git diff --cached --name-only --diff-filter=ACM`.each do |file|
file_text = File.read(File.join(folder_path.chomp, '/', file))
if file_text.match(regex)
puts "#{file} contains invalid word #{$&}. Please remove it"
exit 1
end
end
当我提交一个示例文件时,我没有收到这样的文件或目录错误。 kranthi@kranthi-Aspire-4755:~/learning/git_learning$ git commit -m "tet"
.git/hooks/pre-commit:9:in `read': No such file or directory - /home/kranthi/learning/git_learning/another_folder/test2.txt (Errno::ENOENT)
from .git/hooks/pre-commit:9
from .git/hooks/pre-commit:17:in `map'
from .git/hooks/pre-commit:8:in `each'
from .git/hooks/pre-commit:8:in `map'
from .git/hooks/pre-commit:8
谁能告诉我这里有什么问题。
【问题讨论】:
-
在没有预先设置文件夹路径的情况下可以工作吗? (如github.com/i-wind/gpc/blob/master/pre-commit.rb 或omniref.com/ruby/gems/pre-commit/0.16.1/files/lib/pre-commit/…)
-
工作:|。多谢。我想我可以参考那个 pre-commit gem 实现,这样我就可以避免这样的问题:)