summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2016-01-11 15:34:29 +0100
committerTomasz Maczukin <tomasz@maczukin.pl>2016-01-11 15:34:29 +0100
commita30377c6f1415a863bd40d1876e3cf4c46bb9f5d (patch)
tree338a7ae15e34d4ae65adb2717f53998e12b58f34 /app/models/merge_request.rb
parent4e70f2519bba83d5f9d6fd0bed80e9837e8b5fc5 (diff)
parent1ede18bfa84a47ade94a0fe1acd246233db02693 (diff)
downloadgitlab-ce-a30377c6f1415a863bd40d1876e3cf4c46bb9f5d.tar.gz
Merge branch 'master' into ci/api-builds
* master: (143 commits) Only load autocomplete data when actually needed Check for current user Add pencil icon to edit group settings Issue #5817 wording of the web hooks updated on issue and merge events use JavaScript instead of CoffeeScript in Views, the reason #9819 Before project save ensure that a runners_token exists Fix Error 500 when visiting build page of project with nil runners_token Remove outdated gitlab-git-http-server reference from Install doc Fix typo in build page of projects Update docs for shared runner default settings Disable "Already Blocked" button in admin abuse report page Add CHANGELOG entry for reply-by-email fix Use WOFF versions of SourceSansPro Clean up document on adding users to a project Refactor ZenMode Fix caching issue where build status was not updating in project dashboard Add a CHANGELOG entry for The Most Important Feature of All Time(TM) changes verb `references` to noun `reference`. fixes new branch button positioning, when visible and not visible container DRY up upload and download services ...
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb60
1 files changed, 33 insertions, 27 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index ac25d38eb63..5723ff36e02 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -2,28 +2,28 @@
#
# Table name: merge_requests
#
-# id :integer not null, primary key
-# target_branch :string(255) not null
-# source_branch :string(255) not null
-# source_project_id :integer not null
-# author_id :integer
-# assignee_id :integer
-# title :string(255)
-# created_at :datetime
-# updated_at :datetime
-# milestone_id :integer
-# state :string(255)
-# merge_status :string(255)
-# target_project_id :integer not null
-# iid :integer
-# description :text
-# position :integer default(0)
-# locked_at :datetime
-# updated_by_id :integer
-# merge_error :string(255)
-# merge_params :text (serialized to hash)
-# merge_when_build_succeeds :boolean default(false), not null
-# merge_user_id :integer
+# id :integer not null, primary key
+# target_branch :string(255) not null
+# source_branch :string(255) not null
+# source_project_id :integer not null
+# author_id :integer
+# assignee_id :integer
+# title :string(255)
+# created_at :datetime
+# updated_at :datetime
+# milestone_id :integer
+# state :string(255)
+# merge_status :string(255)
+# target_project_id :integer not null
+# iid :integer
+# description :text
+# position :integer default(0)
+# locked_at :datetime
+# updated_by_id :integer
+# merge_error :string(255)
+# merge_params :text
+# merge_when_build_succeeds :boolean default(FALSE), not null
+# merge_user_id :integer
#
require Rails.root.join("app/models/commit")
@@ -229,6 +229,8 @@ class MergeRequest < ActiveRecord::Base
end
def check_if_can_be_merged
+ return unless unchecked?
+
can_be_merged =
project.repository.can_be_merged?(source_sha, target_branch)
@@ -252,7 +254,11 @@ class MergeRequest < ActiveRecord::Base
end
def mergeable?
- open? && !work_in_progress? && can_be_merged?
+ return false unless open? && !work_in_progress?
+
+ check_if_can_be_merged
+
+ can_be_merged?
end
def gitlab_merge_status
@@ -452,6 +458,10 @@ class MergeRequest < ActiveRecord::Base
!source_branch_exists? || !target_branch_exists?
end
+ def broken?
+ self.commits.blank? || branch_missing? || cannot_be_merged?
+ end
+
def can_be_merged_by?(user)
::Gitlab::GitAccess.new(user, project).can_push_to_branch?(target_branch)
end
@@ -507,8 +517,4 @@ class MergeRequest < ActiveRecord::Base
def ci_commit
@ci_commit ||= source_project.ci_commit(last_commit.id) if last_commit && source_project
end
-
- def broken?
- self.commits.blank? || branch_missing? || cannot_be_merged?
- end
end