summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 00960287928..d3e531f7818 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -3,6 +3,8 @@ require File.join(Rails.root, "app/models/commit")
class MergeRequest < ActiveRecord::Base
include Upvote
+ BROKEN_DIFF = "--broken-diff"
+
UNCHECKED = 1
CAN_BE_MERGED = 2
CANNOT_BE_MERGED = 3
@@ -108,14 +110,25 @@ class MergeRequest < ActiveRecord::Base
def reloaded_diffs
if open? && unmerged_diffs.any?
self.st_diffs = unmerged_diffs
- save
+ self.save
end
- diffs
+
+ rescue Grit::Git::GitTimeout
+ self.st_diffs = [BROKEN_DIFF]
+ self.save
+ end
+
+ def broken_diffs?
+ diffs == [BROKEN_DIFF]
+ end
+
+ def valid_diffs?
+ !broken_diffs?
end
def unmerged_diffs
commits = project.repo.commits_between(target_branch, source_branch).map {|c| Commit.new(c)}
- diffs = project.repo.diff(commits.first.prev_commit.id, commits.last.id) rescue []
+ diffs = project.repo.diff(commits.first.prev_commit.id, commits.last.id)
end
def last_commit