## # Provides an interface to the git commits related to a specific ticket class GitTicket attr_reader :ticket attr_accessor :git_command ## # Creates a new diff from all commits referencing a given ticket. # # @param [String] ticket_reference The ticket reference to use # @param [String] diff_target The git reference to diff against. def initialize(ticket_reference) @ticket = ticket_reference @git_command = "git -c color.ui=always" # So our output is colourised end ## # Sets and returns the commit messages for each commit # @return [Array] The commit messages def commit_messages return @commit_messages if @commit_messages @commit_messages = [] shas.each do |sha| message, _status = Open3.capture2("#{git_command} show #{sha} -s") @commit_messages.push(message) end @commit_messages end ## # Sets and returns the patches for each commit. # # @return [Array] The diffs def patches return @patches if @patches @patches = [] shas.each do |sha| patch, _status = Open3.capture2("#{git_command} show #{sha} --patch") @patches.push(patch) end @patches end ## # Sets and returns the commit SHAs referenced. # # @return [Array] The commit SHAs def shas return @shas if @shas @shas, _status = Open3.capture2("#{git_command} log --all --grep #{@ticket} --format=%H") @shas = @shas.split("\n") end end