From 4ac0160a1184fe4acf86cd07040af78847577e11 Mon Sep 17 00:00:00 2001 From: randx Date: Wed, 20 Jun 2012 20:08:18 +0300 Subject: [PATCH] Hande error with huge commits --- app/controllers/commits_controller.rb | 2 ++ app/views/commits/_commit_box.html.haml | 34 +++++++++++++++++++++++++ app/views/commits/huge_commit.html.haml | 3 +++ app/views/commits/show.html.haml | 34 +------------------------ 4 files changed, 40 insertions(+), 33 deletions(-) create mode 100644 app/views/commits/_commit_box.html.haml create mode 100644 app/views/commits/huge_commit.html.haml diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index 8a91c284..bbf5a672 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -41,6 +41,8 @@ class CommitsController < ApplicationController if @commit.diffs.size > 200 && !params[:force_show_diff] @suppress_diff = true end + rescue Grit::Git::GitTimeout + render "huge_commit" end def compare diff --git a/app/views/commits/_commit_box.html.haml b/app/views/commits/_commit_box.html.haml new file mode 100644 index 00000000..c821c260 --- /dev/null +++ b/app/views/commits/_commit_box.html.haml @@ -0,0 +1,34 @@ +.commit-box{class: @commit.parents.count > 1 ? "merge-commit" : ""} + .commit-head + = link_to "Browse Code »", tree_project_ref_path(@project, @commit.id), :class => "browse-button" + %h3.commit-title + = commit_msg_with_link_to_issues(@project, @commit.title) + - if @commit.description.present? + %pre.commit-description + = commit_msg_with_link_to_issues(@project, @commit.description) + .commit-info + .row + .span4 + = image_tag gravatar_icon(@commit.author_email, 40), :class => "avatar" + .author + %strong= @commit.author_name + authored + %time{title: @commit.authored_date.stamp("Aug 21, 2011 9:23pm")} + #{time_ago_in_words(@commit.authored_date)} ago + - if @commit.different_committer? + .committer + → + %strong= @commit.committer_name + committed + %time{title: @commit.committed_date.stamp("Aug 21, 2011 9:23pm")} + #{time_ago_in_words(@commit.committed_date)} ago + .span7.right + .sha-block + %span.cgray commit + %code= @commit.id + .sha-block + %span.cgray= pluralize(@commit.parents.count, "parent") + - @commit.parents.each do |parent| + = link_to parent.id[0...10], project_commit_path(@project, parent) + + diff --git a/app/views/commits/huge_commit.html.haml b/app/views/commits/huge_commit.html.haml new file mode 100644 index 00000000..ba97a7c5 --- /dev/null +++ b/app/views/commits/huge_commit.html.haml @@ -0,0 +1,3 @@ += render "commits/commit_box" +.alert-message.block-message.error + %h4 Commit diffs are too big to be displayed diff --git a/app/views/commits/show.html.haml b/app/views/commits/show.html.haml index 0365e658..7119bd04 100644 --- a/app/views/commits/show.html.haml +++ b/app/views/commits/show.html.haml @@ -1,36 +1,4 @@ -.commit-box{class: @commit.parents.count > 1 ? "merge-commit" : ""} - .commit-head - = link_to "Browse Code »", tree_project_ref_path(@project, @commit.id), :class => "browse-button" - %h3.commit-title - = commit_msg_with_link_to_issues(@project, @commit.title) - - if @commit.description.present? - %pre.commit-description - = commit_msg_with_link_to_issues(@project, @commit.description) - .commit-info - .row - .span4 - = image_tag gravatar_icon(@commit.author_email, 40), :class => "avatar" - .author - %strong= @commit.author_name - authored - %time{title: @commit.authored_date.stamp("Aug 21, 2011 9:23pm")} - #{time_ago_in_words(@commit.authored_date)} ago - - if @commit.different_committer? - .committer - → - %strong= @commit.committer_name - committed - %time{title: @commit.committed_date.stamp("Aug 21, 2011 9:23pm")} - #{time_ago_in_words(@commit.committed_date)} ago - .span7.right - .sha-block - %span.cgray commit - %code= @commit.id - .sha-block - %span.cgray= pluralize(@commit.parents.count, "parent") - - @commit.parents.each do |parent| - = link_to parent.id[0...10], project_commit_path(@project, parent) - += render "commits/commit_box" = render "commits/diffs", :diffs => @commit.diffs = render "notes/notes", :tid => @commit.id, :tt => "commit" = render "notes/per_line_form"