在Git中编写一个预推钩来grep所有文件的正则表达式想要拒绝push如果找不到正则表达式
我有以下预推钩。 理想情况下,如果任何文件的内容与顶部定义的正则表达式不匹配,我希望它能够遍历所有被推送到我的存储库的文件并拒绝推送。 尝试循环遍历文件时,我收到以下错误:“undefined method` each’for”“:String(NoMethodError)”。 ‘.each’不起作用,因为git命令返回包含已更改文件的字符串。
#!/usr/bin/env ruby regex = "\\s*GO\\s*$" localRef, remoteRef = ARGV #puts localRef #puts remoteRef input = $stdin.readlines[0] localSha = input.split(" ")[1] remoteSha = input.split(" ")[3] #puts localSha #puts remoteSha range = "#{remoteSha}..#{localSha}" #folderPath = `git rev-parse --show-toplevel` #puts folderPath `git diff --name-only --diff-filter=ACMR #{range}`.each do |file| #puts file content = File.read(file) unless content.match(regex) puts "#{file} must end with 'GO' keyword" exit 1 end end exit 0
有没有人知道如何循环返回的文件?
谢谢
只需要使用“.each_line”而不是“.each”。