Можно попробовать что-то вроде следующего.
#!/usr/bin/env ruby
branchName = `git rev-parse --abbrev-ref HEAD`.strip
log = `git reflog show --no-abbrev #{branchName} --format='\%h'`.split("\n")
range = "#{log.last}..#{log.first}".gsub("'", "")
`git diff --name-only --diff-filter=ACMR #{range}`.each_line do |file|
file = file.chomp
command = "git show #{log.first}:#{file}".gsub("'", "")
content = `#{command}`
if ( content =~ /TODO/ )
puts "'#{file}' contains TODO"
exit 1
end
end
exit 0
Это будет искать в содержимом любых новых, добавленных, измененных или переименованных файлов слово TODO.Если он найдет слово, он выйдет и выведет имя файла, содержащего соответствующее регулярное выражение.
Это будет работать для новых веток, но у него есть проблемы, если вы перебазируете свою ветку, как в этом случае это можетвтянуть в чужие изменения.