diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-07-29 12:11:16 +0300 |
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-07-29 12:11:16 +0300 |
| commit | bf9ce1f4cf5592f7aa1f761a5b394e7d500dc034 (patch) | |
| tree | 49dd7610f09bed98db6fbfcf49cff0ac413d3f01 /lib | |
| parent | d30454e112378c24cc9edfd7b511ca42bdb1e399 (diff) | |
| download | gitlab-ce-bf9ce1f4cf5592f7aa1f761a5b394e7d500dc034.tar.gz | |
Refactor compare logic for MR. Use satellites only for forks for better performance
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/gitlab/compare_result.rb | 9 | ||||
| -rw-r--r-- | lib/gitlab/satellite/compare_action.rb | 20 |
2 files changed, 13 insertions, 16 deletions
diff --git a/lib/gitlab/compare_result.rb b/lib/gitlab/compare_result.rb new file mode 100644 index 00000000000..d72391dade5 --- /dev/null +++ b/lib/gitlab/compare_result.rb @@ -0,0 +1,9 @@ +module Gitlab + class CompareResult + attr_reader :commits, :diffs + + def initialize(compare) + @commits, @diffs = compare.commits, compare.diffs + end + end +end diff --git a/lib/gitlab/satellite/compare_action.rb b/lib/gitlab/satellite/compare_action.rb index e5b62576330..4905b146a55 100644 --- a/lib/gitlab/satellite/compare_action.rb +++ b/lib/gitlab/satellite/compare_action.rb @@ -10,28 +10,16 @@ module Gitlab @source_project, @source_branch = source_project, source_branch end - # Only show what is new in the source branch compared to the target branch, not the other way around. - # The line below with merge_base is equivalent to diff with three dots (git diff branch1...branch2) - # From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B" - def diffs + # Compare 2 repositories and return Gitlab::CompareResult object + def result in_locked_and_timed_satellite do |target_repo| prepare_satellite!(target_repo) update_satellite_source_and_target!(target_repo) - compare(target_repo).diffs - end - rescue Grit::Git::CommandFailed => ex - raise BranchesWithoutParent - end - # Retrieve an array of commits between the source and the target - def commits - in_locked_and_timed_satellite do |target_repo| - prepare_satellite!(target_repo) - update_satellite_source_and_target!(target_repo) - compare(target_repo).commits + Gitlab::CompareResult.new(compare(target_repo)) end rescue Grit::Git::CommandFailed => ex - handle_exception(ex) + raise BranchesWithoutParent end private |
