comparison app/controllers/.svn/text-base/repositories_controller.rb.svn-base @ 117:af80e5618e9b redmine-1.1

* Update to Redmine 1.1-stable branch (Redmine SVN rev 4707)
author Chris Cannam
date Thu, 13 Jan 2011 12:53:21 +0000
parents 513646585e45
children cd2282d2aa55
comparison
equal deleted inserted replaced
39:150ceac17a8d 117:af80e5618e9b
137 @annotate = @repository.scm.annotate(@path, @rev) 137 @annotate = @repository.scm.annotate(@path, @rev)
138 (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty? 138 (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
139 end 139 end
140 140
141 def revision 141 def revision
142 raise ChangesetNotFound if @rev.nil? || @rev.empty?
142 @changeset = @repository.find_changeset_by_name(@rev) 143 @changeset = @repository.find_changeset_by_name(@rev)
143 raise ChangesetNotFound unless @changeset 144 raise ChangesetNotFound unless @changeset
144 145
145 respond_to do |format| 146 respond_to do |format|
146 format.html 147 format.html
172 @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") 173 @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
173 unless read_fragment(@cache_key) 174 unless read_fragment(@cache_key)
174 @diff = @repository.diff(@path, @rev, @rev_to) 175 @diff = @repository.diff(@path, @rev, @rev_to)
175 show_error_not_found unless @diff 176 show_error_not_found unless @diff
176 end 177 end
178
179 @changeset = @repository.find_changeset_by_name(@rev)
180 @changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil
177 end 181 end
178 end 182 end
179 183
180 def stats 184 def stats
181 end 185 end
194 else 198 else
195 render_404 199 render_404
196 end 200 end
197 end 201 end
198 202
199 private 203 private
204
205 REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i
206
200 def find_repository 207 def find_repository
201 @project = Project.find(params[:id]) 208 @project = Project.find(params[:id])
202 @repository = @project.repository 209 @repository = @project.repository
203 (render_404; return false) unless @repository 210 (render_404; return false) unless @repository
204 @path = params[:path].join('/') unless params[:path].nil? 211 @path = params[:path].join('/') unless params[:path].nil?
205 @path ||= '' 212 @path ||= ''
206 @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip 213 @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip
207 @rev_to = params[:rev_to] 214 @rev_to = params[:rev_to]
215
216 unless @rev.to_s.match(REV_PARAM_RE) && @rev.to_s.match(REV_PARAM_RE)
217 if @repository.branches.blank?
218 raise InvalidRevisionParam
219 end
220 end
208 rescue ActiveRecord::RecordNotFound 221 rescue ActiveRecord::RecordNotFound
209 render_404 222 render_404
210 rescue InvalidRevisionParam 223 rescue InvalidRevisionParam
211 show_error_not_found 224 show_error_not_found
212 end 225 end