class Git::Lib

def process_commit_data(data, sha = nil, indent = 4)

def process_commit_data(data, sha = nil, indent = 4)
  in_message = false
        
  if sha
    hsh = {'sha' => sha, 'message' => '', 'parent' => []}
  else
    hsh_array = []        
  end

  data.each do |line|
    line = line.chomp
    if line == ''
      in_message = !in_message
    elsif in_message
      hsh['message'] << line[indent..-1] << "\n"
    else
      data = line.split
      key = data.shift
      value = data.join(' ')
      if key == 'commit'
        sha = value
        hsh_array << hsh if hsh
        hsh = {'sha' => sha, 'message' => '', 'parent' => []}
      end
      if key == 'parent'
        hsh[key] << value
      else
        hsh[key] = value
      end
    end
  end
  
  if hsh_array
    hsh_array << hsh if hsh
    hsh_array
  else
    hsh
  end
end