Sha256: 6fb8a42ca8ac935301bf1c8e0284bb0c3a77c315910a1556145ca4669290ceaa

Contents?: true

Size: 822 Bytes

Versions: 33

Compression:

Stored size: 822 Bytes

Contents

module Gitlab
  module Git
    class LogParser
      # Parses the log file into a collection of commits
      # Data model:
      #   {author_name, author_email, date, additions, deletions}
      def self.parse_log(log_from_git)
        log = log_from_git.split("\n")
        collection = []

        log.each_slice(5) do |slice|
          entry = {}
          entry[:author_name] = slice[0].force_encoding('UTF-8')
          entry[:author_email] = slice[1].force_encoding('UTF-8')
          entry[:date] = slice[2]

          if slice[4]
            changes = slice[4]

            entry[:additions] = $1.to_i if changes =~ /(\d+) insertion/
            entry[:deletions] = $1.to_i if changes =~ /(\d+) deletion/
          end

          collection.push(entry)
        end

        collection
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
gitlab_git-6.2.2 lib/gitlab_git/log_parser.rb
gitlab_git-7.0.0.rc2 lib/gitlab_git/log_parser.rb
gitlab_git-7.0.0.rc1 lib/gitlab_git/log_parser.rb
gitlab_git-6.3.0 lib/gitlab_git/log_parser.rb
gitlab_git-6.2.1 lib/gitlab_git/log_parser.rb
gitlab_git-6.2.0 lib/gitlab_git/log_parser.rb
gitlab_git-6.1.0 lib/gitlab_git/log_parser.rb
gitlab_git-6.0.1 lib/gitlab_git/log_parser.rb
gitlab_git-6.0.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.9.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.8.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.7.1 lib/gitlab_git/log_parser.rb
gitlab_git-5.7.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.6.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.5.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.4.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.3.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.2.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.1.0 lib/gitlab_git/log_parser.rb
gitlab_git-5.0.0 lib/gitlab_git/log_parser.rb