in lib/grit/git-ruby/repository.rb [597:642]
def look_for_commits(commit_sha, path, looking_for, options = {})
return [] if @already_searched[commit_sha]
@already_searched[commit_sha] = true
commit = get_object_by_sha1(commit_sha)
tree_sha = get_subtree(commit_sha, path)
found_data = []
if commit.parent.size == 0
looking_for.each do |search|
if found_data.assoc(search)
found_data << [search, commit_sha]
end
end
return found_data
end
commit.parent.each do |pc|
diff = quick_diff(tree_sha, get_subtree(pc, path), '.', false)
looking_for.each do |search|
if match = diff.assoc(search)
found_data << [search, commit_sha, match]
looking_for.delete(search)
end
end
if looking_for.size <= 0
return found_data
end
found_data += look_for_commits(pc, path, looking_for)
return found_data if options[:first_parent]
end
found_data
end