diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-07-15 17:28:09 +0200 |
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-07-15 17:28:09 +0200 |
| commit | 26f5d6047d6e21a5c65a4276266648f1e69aac4a (patch) | |
| tree | 40e162779bf931dee297a7fdde325cd7bdf7b07b /app/models | |
| parent | cb6f34e367a58d277c58d7861343af6e08d5508a (diff) | |
| download | gitlab-ce-26f5d6047d6e21a5c65a4276266648f1e69aac4a.tar.gz | |
Refactor compare and fetch logic
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/merge_request.rb | 8 | ||||
| -rw-r--r-- | app/models/merge_request_diff.rb | 22 | ||||
| -rw-r--r-- | app/models/repository.rb | 2 |
3 files changed, 20 insertions, 12 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index e32b224eb77..4dcde029efa 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -437,4 +437,12 @@ class MergeRequest < ActiveRecord::Base def source_sha commits.first.sha end + + def fetch_ref + target_project.repository.fetch_ref( + source_project.repository.path_to_repo, + "refs/heads/#{source_branch}", + "refs/merge-requests/#{id}/head" + ) + end end diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb index 8a48f78dbd4..6f01a589d1c 100644 --- a/app/models/merge_request_diff.rb +++ b/app/models/merge_request_diff.rb @@ -162,20 +162,18 @@ class MergeRequestDiff < ActiveRecord::Base def compare_result @compare_result ||= begin - source_sha = merge_request.source_project.commit(source_branch).sha + # Update ref if merge request is from fork + merge_request.fetch_ref if merge_request.for_fork? - merge_request.target_project.repository.fetch_ref( - merge_request.source_project.repository.path_to_repo, - "refs/heads/#{merge_request.source_branch}", - "refs/merge-requests/#{merge_request.id}/head" - ) + # Get latest sha of branch from source project + source_sha = merge_request.source_project.commit(source_branch).sha - CompareService.new.execute( - merge_request.author, - merge_request.target_project, - source_sha, - merge_request.target_project, - merge_request.target_branch, + Gitlab::CompareResult.new( + Gitlab::Git::Compare.new( + merge_request.target_project.repository.raw_repository, + merge_request.target_branch, + source_sha, + ) ) end end diff --git a/app/models/repository.rb b/app/models/repository.rb index 1924e7ee072..41666bd6e38 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -428,6 +428,8 @@ class Repository if our_commit && their_commit !rugged.merge_commits(our_commit, their_commit).conflicts? + else + false end end |
