self.list_from_string

in lib/grit/commit.rb [138:184]


    def self.list_from_string(repo, text)
      text_gpgless = text.gsub(/gpgsig -----BEGIN PGP SIGNATURE-----[\n\r](.*[\n\r])*? -----END PGP SIGNATURE-----[\n\r]/, "")
      lines = text_gpgless.split("\n")

      commits = []

      while !lines.empty?
        
        
        while !lines.empty? && lines.first !~ /^commit [a-zA-Z0-9]*$/
          lines.shift
        end

        id = lines.shift.split.last
        tree = lines.shift.split.last

        parents = []
        parents << lines.shift.split.last while lines.first =~ /^parent/

        author_line = lines.shift
        author_line << lines.shift if lines[0] !~ /^committer /
        author, authored_date = self.actor(author_line)

        committer_line = lines.shift
        committer_line << lines.shift if lines[0] && lines[0] != '' && lines[0] !~ /^encoding/
        committer, committed_date = self.actor(committer_line)

        
        encoding = lines.shift.split.last if lines.first =~ /^encoding/

        
        
        lines.shift while lines.first =~ /^ /

        lines.shift

        message_lines = []
        message_lines << lines.shift[4..-1] while lines.first =~ /^ {4}/

        lines.shift while lines.first && lines.first.empty?

        commits << Commit.new(repo, id, parents, tree, author, authored_date, committer, committed_date, message_lines)
      end

      commits
    end