Select Git revision
Forked from
GitLab.org / GitLab FOSS
33450 commits behind the upstream repository.
-
Dmitriy Zaporozhets authored
This reverts commit 5daf44b7, reversing changes made to 2f706fbd.
Dmitriy Zaporozhets authoredThis reverts commit 5daf44b7, reversing changes made to 2f706fbd.
merge_request_diff.rb 3.97 KiB
# == Schema Information
#
# Table name: merge_request_diffs
#
# id :integer not null, primary key
# state :string(255)
# st_commits :text
# st_diffs :text
# merge_request_id :integer not null
# created_at :datetime
# updated_at :datetime
#
require Rails.root.join("app/models/commit")
class MergeRequestDiff < ActiveRecord::Base
include Sortable
# Prevent store of diff if commits amount more then 500
COMMITS_SAFE_SIZE = 500
attr_reader :commits, :diffs
belongs_to :merge_request
delegate :target_branch, :source_branch, to: :merge_request, prefix: nil
state_machine :state, initial: :empty do
state :collected
state :timeout
state :overflow_commits_safe_size
state :overflow_diff_files_limit
state :overflow_diff_lines_limit
end
serialize :st_commits
serialize :st_diffs
after_create :reload_content
def reload_content
reload_commits
reload_diffs
end
def diffs
@diffs ||= (load_diffs(st_diffs) || [])
end
def commits
@commits ||= load_commits(st_commits || [])
end
def last_commit
commits.first
end
def last_commit_short_sha
@last_commit_short_sha ||= last_commit.short_id
end
private
def dump_commits(commits)
commits.map(&:to_hash)
end
def load_commits(array)
array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash), merge_request.source_project) }
end