From a87989fb7d0c4f05658ba29dec48ecefedf32334 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 15 Jul 2015 15:45:57 +0200 Subject: Remove satellites --- app/models/merge_request.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 53b3fc10ccb..aa2137e7469 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -207,7 +207,7 @@ class MergeRequest < ActiveRecord::Base def check_if_can_be_merged can_be_merged = if for_fork? - Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged? + raise 'Implement me' else project.repository.can_be_merged?(source_branch, target_branch) end @@ -274,14 +274,14 @@ class MergeRequest < ActiveRecord::Base # # see "git diff" def to_diff(current_user) - Gitlab::Satellite::MergeAction.new(current_user, self).diff_in_satellite + raise 'Implement me' end # Returns the commit as a series of email patches. # # see "git format-patch" def to_patch(current_user) - Gitlab::Satellite::MergeAction.new(current_user, self).format_patch + raise 'Implement me' end def hook_attrs -- cgit v1.2.1 From 2a6f522cac52ead493aa9f69017e2d7780c342a1 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 15 Jul 2015 16:45:38 +0200 Subject: Implement merge from forks without satellites --- app/models/merge_request.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index aa2137e7469..e32b224eb77 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -206,11 +206,7 @@ class MergeRequest < ActiveRecord::Base def check_if_can_be_merged can_be_merged = - if for_fork? - raise 'Implement me' - else - project.repository.can_be_merged?(source_branch, target_branch) - end + project.repository.can_be_merged?(source_sha, target_branch) if can_be_merged mark_as_mergeable @@ -274,14 +270,14 @@ class MergeRequest < ActiveRecord::Base # # see "git diff" def to_diff(current_user) - raise 'Implement me' + target_project.repository.diff_text(target_branch, source_sha) end # Returns the commit as a series of email patches. # # see "git format-patch" def to_patch(current_user) - raise 'Implement me' + target_project.repository.format_patch(target_branch, source_sha) end def hook_attrs @@ -432,4 +428,13 @@ class MergeRequest < ActiveRecord::Base "Open" end end + + def target_sha + @target_sha ||= target_project. + repository.commit(target_branch).sha + end + + def source_sha + commits.first.sha + end end -- cgit v1.2.1 From 26f5d6047d6e21a5c65a4276266648f1e69aac4a Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 15 Jul 2015 17:28:09 +0200 Subject: Refactor compare and fetch logic --- app/models/merge_request.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/models/merge_request.rb') 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 -- cgit v1.2.1 From a7fded9b9529cfc08463afd4f6cf12478262e951 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 16 Jul 2015 16:03:07 +0200 Subject: Huge refactoring for accepting merge requests Signed-off-by: Dmitriy Zaporozhets --- app/models/merge_request.rb | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 4dcde029efa..631a2d887cc 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -41,8 +41,6 @@ class MergeRequest < ActiveRecord::Base delegate :commits, :diffs, :last_commit, :last_commit_short_sha, to: :merge_request_diff, prefix: nil - attr_accessor :should_remove_source_branch - # When this attribute is true some MR validation is ignored # It allows us to close or modify broken merge requests attr_accessor :allow_broken @@ -57,7 +55,7 @@ class MergeRequest < ActiveRecord::Base transition [:reopened, :opened] => :closed end - event :merge do + event :mark_as_merged do transition [:reopened, :opened, :locked] => :merged end @@ -223,14 +221,6 @@ class MergeRequest < ActiveRecord::Base self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last end - def automerge!(current_user, commit_message = nil) - return unless automergeable? - - MergeRequests::AutoMergeService. - new(target_project, current_user). - execute(self, commit_message) - end - def open? opened? || reopened? end @@ -239,11 +229,11 @@ class MergeRequest < ActiveRecord::Base title =~ /\A\[?WIP\]?:? /i end - def automergeable? + def mergeable? open? && !work_in_progress? && can_be_merged? end - def automerge_status + def gitlab_merge_status if work_in_progress? "work_in_progress" else @@ -445,4 +435,13 @@ class MergeRequest < ActiveRecord::Base "refs/merge-requests/#{id}/head" ) end + + def in_locked_state + begin + lock_mr + yield + ensure + unlock_mr if locked? + end + end end -- cgit v1.2.1