diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-01 20:56:19 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-01 20:56:19 +0000 |
commit | 0759212a447491d9b886eb489166518b57a9c169 (patch) | |
tree | 249170aae5af9b93d44e6b2bb2768efd62f980f1 | |
parent | 7eda64e46432c18bbbbb14de42b15331e4c071b9 (diff) | |
download | redmine-0759212a447491d9b886eb489166518b57a9c169.tar.gz redmine-0759212a447491d9b886eb489166518b57a9c169.zip |
Added fragment caching for svn diffs.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@499 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/repositories_controller.rb | 13 | ||||
-rw-r--r-- | app/views/repositories/diff.rhtml | 16 |
2 files changed, 18 insertions, 11 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index f961049be..badbf6ecb 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -17,6 +17,7 @@ require 'SVG/Graph/Bar' require 'SVG/Graph/BarHorizontal' +require 'digest/sha1' class RepositoriesController < ApplicationController layout 'base' @@ -73,10 +74,14 @@ class RepositoriesController < ApplicationController end def diff - @rev_to = params[:rev_to] || (@rev-1) - type = params[:type] || 'inline' - @diff = @repository.scm.diff(params[:path], @rev, @rev_to, type) - show_error and return unless @diff + @rev_to = (params[:rev_to] && params[:rev_to].to_i > 0) ? params[:rev_to].to_i : (@rev - 1) + @diff_type = ('sbs' == params[:type]) ? 'sbs' : 'inline' + + @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") + unless read_fragment(@cache_key) + @diff = @repository.scm.diff(@path, @rev, @rev_to, type) + show_error and return unless @diff + end end def stats diff --git a/app/views/repositories/diff.rhtml b/app/views/repositories/diff.rhtml index 31b42d4ab..b1cfa8b44 100644 --- a/app/views/repositories/diff.rhtml +++ b/app/views/repositories/diff.rhtml @@ -8,21 +8,22 @@ <% end %> <% end %> <p><label><%= l(:label_view_diff) %></label> - <%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], params[:type]), :onchange => "if (this.value != '') {this.form.submit()}" %> - <%= submit_tag l(:button_apply) %></p> + <%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], params[:type]), :onchange => "if (this.value != '') {this.form.submit()}" %></p> <% end %> + +<% cache(@cache_key) do %> <% @diff.each do |table_file| %> -<% if params[:type] == 'sbs' %> +<% if @diff_type == 'sbs' %> <table class="list"> <thead> <tr> <th colspan="4" class="list-filename"> - <%= l(:label_attachment) %>: <%= table_file.file_name %> + <%= table_file.file_name %> </th> </tr> <tr> - <th colspan="2"><%= l(:label_revision) %> <%= @rev %></th> - <th colspan="2"><%= l(:label_revision) %> <%= @rev_to %></th> + <th colspan="2">@<%= @rev %></th> + <th colspan="2">@<%= @rev_to %></th> </tr> </thead> <tbody> @@ -50,7 +51,7 @@ <thead> <tr> <th colspan="3" class="list-filename"> - <%= l(:label_attachment) %>: <%= table_file.file_name %> + <%= table_file.file_name %> </th> </tr> <tr> @@ -83,6 +84,7 @@ </table> <% end %> <% end %> +<% end %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> |