diff app/controllers/.svn/text-base/repositories_controller.rb.svn-base @ 119:8661b858af72

* Update to Redmine trunk rev 4705
author Chris Cannam
date Thu, 13 Jan 2011 14:12:06 +0000
parents 513646585e45
children cd2282d2aa55 07fa8a8b56a8
line wrap: on
line diff
--- a/app/controllers/.svn/text-base/repositories_controller.rb.svn-base	Fri Nov 19 14:05:24 2010 +0000
+++ b/app/controllers/.svn/text-base/repositories_controller.rb.svn-base	Thu Jan 13 14:12:06 2011 +0000
@@ -139,6 +139,7 @@
   end
   
   def revision
+    raise ChangesetNotFound if @rev.nil? || @rev.empty?
     @changeset = @repository.find_changeset_by_name(@rev)
     raise ChangesetNotFound unless @changeset
 
@@ -174,9 +175,13 @@
         @diff = @repository.diff(@path, @rev, @rev_to)
         show_error_not_found unless @diff
       end
+
+      @changeset = @repository.find_changeset_by_name(@rev)
+      @changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil
+      @diff_format_revisions = @repository.diff_format_revisions(@changeset, @changeset_to)
     end
   end
-  
+
   def stats  
   end
   
@@ -196,7 +201,10 @@
     end
   end
   
-private
+  private
+
+  REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i
+
   def find_repository
     @project = Project.find(params[:id])
     @repository = @project.repository
@@ -205,6 +213,12 @@
     @path ||= ''
     @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip
     @rev_to = params[:rev_to]
+    
+    unless @rev.to_s.match(REV_PARAM_RE) && @rev.to_s.match(REV_PARAM_RE)
+      if @repository.branches.blank?
+        raise InvalidRevisionParam
+      end
+    end
   rescue ActiveRecord::RecordNotFound
     render_404
   rescue InvalidRevisionParam