diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-07-05 22:59:37 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-07-05 22:59:37 +0300 |
commit | 0a6b64e6a9c5858801a7af2c408416b1c98de471 (patch) | |
tree | 35bce6a5d48fc5d6359937ddb503a84f0a8217e4 /app/models/merge_request.rb | |
parent | d40b9ce26d9df5c9245d9a4f3c07c91dd1706f06 (diff) | |
download | gitlab-ce-0a6b64e6a9c5858801a7af2c408416b1c98de471.tar.gz |
MR: Handle broken diff ex. in case its too huge
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 19 |
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 |