Merge branch 'dm-merge-request-creation-error' into 'master'
Make sure MergeRequest commit methods work when either compare_commits or merge_request_diff is set Closes #35077 See merge request !12856
This commit is contained in:
commit
dbcc0e03ac
2 changed files with 32 additions and 7 deletions
|
@ -107,7 +107,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap
|
||||||
|
|
||||||
@target_project = @merge_request.target_project
|
@target_project = @merge_request.target_project
|
||||||
@source_project = @merge_request.source_project
|
@source_project = @merge_request.source_project
|
||||||
@commits = @merge_request.compare_commits.reverse
|
@commits = @merge_request.commits
|
||||||
@commit = @merge_request.diff_head_commit
|
@commit = @merge_request.diff_head_commit
|
||||||
|
|
||||||
@note_counts = Note.where(commit_id: @commits.map(&:id))
|
@note_counts = Note.where(commit_id: @commits.map(&:id))
|
||||||
|
|
|
@ -32,9 +32,6 @@ class MergeRequest < ActiveRecord::Base
|
||||||
after_create :ensure_merge_request_diff, unless: :importing?
|
after_create :ensure_merge_request_diff, unless: :importing?
|
||||||
after_update :reload_diff_if_branch_changed
|
after_update :reload_diff_if_branch_changed
|
||||||
|
|
||||||
delegate :commits, :real_size, :commit_shas, :commits_count,
|
|
||||||
to: :merge_request_diff, prefix: nil
|
|
||||||
|
|
||||||
# When this attribute is true some MR validation is ignored
|
# When this attribute is true some MR validation is ignored
|
||||||
# It allows us to close or modify broken merge requests
|
# It allows us to close or modify broken merge requests
|
||||||
attr_accessor :allow_broken
|
attr_accessor :allow_broken
|
||||||
|
@ -224,6 +221,36 @@ class MergeRequest < ActiveRecord::Base
|
||||||
"#{project.to_reference(from, full: full)}#{reference}"
|
"#{project.to_reference(from, full: full)}#{reference}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def commits
|
||||||
|
if persisted?
|
||||||
|
merge_request_diff.commits
|
||||||
|
elsif compare_commits
|
||||||
|
compare_commits.reverse
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def commits_count
|
||||||
|
if persisted?
|
||||||
|
merge_request_diff.commits_count
|
||||||
|
elsif compare_commits
|
||||||
|
compare_commits.size
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def commit_shas
|
||||||
|
if persisted?
|
||||||
|
merge_request_diff.commit_shas
|
||||||
|
elsif compare_commits
|
||||||
|
compare_commits.reverse.map(&:sha)
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def first_commit
|
def first_commit
|
||||||
merge_request_diff ? merge_request_diff.first_commit : compare_commits.first
|
merge_request_diff ? merge_request_diff.first_commit : compare_commits.first
|
||||||
end
|
end
|
||||||
|
@ -246,9 +273,7 @@ class MergeRequest < ActiveRecord::Base
|
||||||
def diff_size
|
def diff_size
|
||||||
# Calling `merge_request_diff.diffs.real_size` will also perform
|
# Calling `merge_request_diff.diffs.real_size` will also perform
|
||||||
# highlighting, which we don't need here.
|
# highlighting, which we don't need here.
|
||||||
return real_size if merge_request_diff
|
merge_request_diff&.real_size || diffs.real_size
|
||||||
|
|
||||||
diffs.real_size
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def diff_base_commit
|
def diff_base_commit
|
||||||
|
|
Loading…
Reference in a new issue