Correctly determine MR diff base when MR has merge conflicts
This commit is contained in:
parent
a93f7099fa
commit
5cce1278ad
5 changed files with 19 additions and 22 deletions
|
@ -20,8 +20,7 @@ v 8.4.2 (unreleased)
|
|||
improvement when checking if a repository was empty
|
||||
- Add instrumentation for Gitlab::Git::Repository instance methods so we can
|
||||
track them in Performance Monitoring.
|
||||
|
||||
v 8.4.2 (unreleased)
|
||||
- Correctly highlight MR diff when MR has merge conflicts
|
||||
- Fix method undefined when using external commit status in builds
|
||||
|
||||
v 8.4.1
|
||||
|
|
|
@ -21,7 +21,7 @@ class Projects::CompareController < Projects::ApplicationController
|
|||
@commits = Commit.decorate(compare_result.commits, @project)
|
||||
@diffs = compare_result.diffs
|
||||
@commit = @project.commit(head_ref)
|
||||
@base_commit = @project.commit(base_ref)
|
||||
@base_commit = @project.merge_base_commit(base_ref, head_ref)
|
||||
@diff_refs = [@base_commit, @commit]
|
||||
@line_notes = []
|
||||
end
|
||||
|
|
|
@ -184,7 +184,7 @@ class MergeRequest < ActiveRecord::Base
|
|||
if merge_request_diff
|
||||
merge_request_diff.base_commit
|
||||
else
|
||||
self.target_project.commit(self.target_branch)
|
||||
self.target_project.merge_base_commit(self.source_sha, self.target_branch)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -489,7 +489,7 @@ class MergeRequest < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def source_sha
|
||||
commits.first.sha
|
||||
last_commit.sha
|
||||
end
|
||||
|
||||
def fetch_ref
|
||||
|
|
|
@ -48,14 +48,11 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def diffs_no_whitespace
|
||||
# Get latest sha of branch from source project
|
||||
source_sha = merge_request.source_project.commit(source_branch).sha
|
||||
|
||||
compare_result = Gitlab::CompareResult.new(
|
||||
Gitlab::Git::Compare.new(
|
||||
merge_request.target_project.repository.raw_repository,
|
||||
merge_request.target_branch,
|
||||
source_sha,
|
||||
self.repository.raw_repository,
|
||||
self.target_branch,
|
||||
self.source_sha,
|
||||
), { ignore_whitespace_change: true }
|
||||
)
|
||||
@diffs_no_whitespace ||= load_diffs(dump_commits(compare_result.diffs))
|
||||
|
@ -83,8 +80,6 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
@last_commit_short_sha ||= last_commit.short_id
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def dump_commits(commits)
|
||||
commits.map(&:to_hash)
|
||||
end
|
||||
|
@ -163,7 +158,7 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
|
||||
self.st_diffs = new_diffs
|
||||
|
||||
self.base_commit_sha = merge_request.target_project.commit(target_branch).try(:sha)
|
||||
self.base_commit_sha = self.repository.merge_base(self.source_sha, self.target_branch)
|
||||
|
||||
self.save
|
||||
end
|
||||
|
@ -181,7 +176,10 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
merge_request.target_project.repository
|
||||
end
|
||||
|
||||
private
|
||||
def source_sha
|
||||
source_commit = merge_request.source_project.commit(source_branch)
|
||||
source_commit.try(:sha)
|
||||
end
|
||||
|
||||
def compare_result
|
||||
@compare_result ||=
|
||||
|
@ -189,15 +187,11 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
# Update ref for merge request
|
||||
merge_request.fetch_ref
|
||||
|
||||
# Get latest sha of branch from source project
|
||||
source_commit = merge_request.source_project.commit(source_branch)
|
||||
source_sha = source_commit.try(:sha)
|
||||
|
||||
Gitlab::CompareResult.new(
|
||||
Gitlab::Git::Compare.new(
|
||||
merge_request.target_project.repository.raw_repository,
|
||||
merge_request.target_branch,
|
||||
source_sha,
|
||||
self.repository.raw_repository,
|
||||
self.target_branch,
|
||||
self.source_sha
|
||||
)
|
||||
)
|
||||
end
|
||||
|
|
|
@ -348,6 +348,10 @@ class Project < ActiveRecord::Base
|
|||
repository.commit(id)
|
||||
end
|
||||
|
||||
def merge_base_commit(first_commit_id, second_commit_id)
|
||||
repository.commit(repository.merge_base(first_commit_id, second_commit_id))
|
||||
end
|
||||
|
||||
def saved?
|
||||
id && persisted?
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue