43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# Gitaly note: JV: 1 RPC, migration in progress.
 | 
						|
 | 
						|
# Gitlab::Git::CommitStats counts the additions, deletions, and total changes
 | 
						|
# in a commit.
 | 
						|
module Gitlab
 | 
						|
  module Git
 | 
						|
    class CommitStats
 | 
						|
      attr_reader :id, :additions, :deletions, :total
 | 
						|
 | 
						|
      # Instantiate a CommitStats object
 | 
						|
      #
 | 
						|
      # Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/323
 | 
						|
      def initialize(repo, commit)
 | 
						|
        @id = commit.id
 | 
						|
        @additions = 0
 | 
						|
        @deletions = 0
 | 
						|
        @total = 0
 | 
						|
 | 
						|
        repo.gitaly_migrate(:commit_stats) do |is_enabled|
 | 
						|
          if is_enabled
 | 
						|
            gitaly_stats(repo, commit)
 | 
						|
          else
 | 
						|
            rugged_stats(commit)
 | 
						|
          end
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      def gitaly_stats(repo, commit)
 | 
						|
        stats = repo.gitaly_commit_client.commit_stats(@id)
 | 
						|
        @additions = stats.additions
 | 
						|
        @deletions = stats.deletions
 | 
						|
        @total = @additions + @deletions
 | 
						|
      end
 | 
						|
 | 
						|
      def rugged_stats(commit)
 | 
						|
        diff = commit.rugged_diff_from_parent
 | 
						|
        _files_changed, @additions, @deletions = diff.stat
 | 
						|
        @total = @additions + @deletions
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |