From 84727fba96c6794874e1f94d581408b70e1842a7 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 11 Aug 2015 10:26:19 +0200 Subject: Revert "Merge branch 'improve-merge-requests' into 'master' " This reverts commit 4773f38e28c91dbbb6e5e385e0c403877298bfed, reversing changes made to 0d5d80b735eb18ae79eb2bfe26c08896d53db414. --- app/models/merge_request.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 467b90861f9..631a2d887cc 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -432,7 +432,7 @@ class MergeRequest < ActiveRecord::Base target_project.repository.fetch_ref( source_project.repository.path_to_repo, "refs/heads/#{source_branch}", - "refs/merge-requests/#{iid}/head" + "refs/merge-requests/#{id}/head" ) end -- cgit v1.2.1 From 9f10943c1a76576ac40d96189a28a4d6123a75d8 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 11 Aug 2015 10:28:42 +0200 Subject: Revert "Merge branch 'drop-satellites'" This reverts commit 957e849f41d96fa9778fcdd06792d2f0274b29ab, reversing changes made to 6b9dbe9f5a175a8162abf296367f561bab3eea1a. Signed-off-by: Dmitriy Zaporozhets --- app/models/merge_request.rb | 56 +++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 32 deletions(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 631a2d887cc..1ef76d16700 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -41,6 +41,8 @@ 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 @@ -55,7 +57,7 @@ class MergeRequest < ActiveRecord::Base transition [:reopened, :opened] => :closed end - event :mark_as_merged do + event :merge do transition [:reopened, :opened, :locked] => :merged end @@ -204,7 +206,11 @@ class MergeRequest < ActiveRecord::Base def check_if_can_be_merged can_be_merged = - project.repository.can_be_merged?(source_sha, target_branch) + if for_fork? + Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged? + else + project.repository.can_be_merged?(source_branch, target_branch) + end if can_be_merged mark_as_mergeable @@ -221,6 +227,18 @@ 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 remove_source_branch? + self.should_remove_source_branch && !self.source_project.root_ref?(self.source_branch) && !self.for_fork? + end + def open? opened? || reopened? end @@ -229,11 +247,11 @@ class MergeRequest < ActiveRecord::Base title =~ /\A\[?WIP\]?:? /i end - def mergeable? + def automergeable? open? && !work_in_progress? && can_be_merged? end - def gitlab_merge_status + def automerge_status if work_in_progress? "work_in_progress" else @@ -260,14 +278,14 @@ class MergeRequest < ActiveRecord::Base # # see "git diff" def to_diff(current_user) - target_project.repository.diff_text(target_branch, source_sha) + Gitlab::Satellite::MergeAction.new(current_user, self).diff_in_satellite end # Returns the commit as a series of email patches. # # see "git format-patch" def to_patch(current_user) - target_project.repository.format_patch(target_branch, source_sha) + Gitlab::Satellite::MergeAction.new(current_user, self).format_patch end def hook_attrs @@ -418,30 +436,4 @@ 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 - - def fetch_ref - target_project.repository.fetch_ref( - source_project.repository.path_to_repo, - "refs/heads/#{source_branch}", - "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 From 32046983ad0a702b9c091d052859a13660497dcd Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 11 Aug 2015 10:48:02 +0200 Subject: Revert "Merge branch 'refactor-can-be-merge' into 'master'" This reverts commit 459e6d346768d9d8fceaee00bf0870b8e7c4ed9a, reversing changes made to 804168e1def1204af712febb229f41a3865f085f. Signed-off-by: Dmitriy Zaporozhets --- app/models/merge_request.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 1ef76d16700..5a48fe66281 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -209,7 +209,13 @@ class MergeRequest < ActiveRecord::Base if for_fork? Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged? else - project.repository.can_be_merged?(source_branch, target_branch) + rugged = project.repository.rugged + our_commit = rugged.branches[target_branch].target + their_commit = rugged.branches[source_branch].target + + if our_commit && their_commit + !rugged.merge_commits(our_commit, their_commit).conflicts? + end end if can_be_merged -- cgit v1.2.1 From 3b02ad846723888a8468f5be88bcbb5955028b6d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 11 Aug 2015 10:50:39 +0200 Subject: Revert "Merge branches inside one repository using rugged instead of satellites" This reverts commit d24c40ec219d76e01e2fab5f6ebf431adae91bdd. --- app/models/merge_request.rb | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'app/models/merge_request.rb') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 5a48fe66281..324d1795ab4 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -205,20 +205,7 @@ class MergeRequest < ActiveRecord::Base end def check_if_can_be_merged - can_be_merged = - if for_fork? - Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged? - else - rugged = project.repository.rugged - our_commit = rugged.branches[target_branch].target - their_commit = rugged.branches[source_branch].target - - if our_commit && their_commit - !rugged.merge_commits(our_commit, their_commit).conflicts? - end - end - - if can_be_merged + if Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged? mark_as_mergeable else mark_as_unmergeable -- cgit v1.2.1