git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2898 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/0.9.0
@@ -130,7 +130,7 @@ class RepositoriesController < ApplicationController | |||
end | |||
def revision | |||
@changeset = @repository.changesets.find(:first, :conditions => ["revision LIKE ?", @rev + '%']) | |||
@changeset = @repository.find_changeset_by_name(@rev) | |||
raise ChangesetNotFound unless @changeset | |||
respond_to do |format| |
@@ -92,6 +92,11 @@ class Repository < ActiveRecord::Base | |||
path | |||
end | |||
# Finds and returns a revision with a number or the beginning of a hash | |||
def find_changeset_by_name(name) | |||
changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_i] : ["revision LIKE ?", name + '%'])) | |||
end | |||
def latest_changeset | |||
@latest_changeset ||= changesets.find(:first) | |||
end |
@@ -81,4 +81,24 @@ changesets_008: | |||
user_id: 3 | |||
repository_id: 10 | |||
committer: dlopper | |||
changesets_009: | |||
commit_date: "2009-09-10" | |||
comments: One file added. | |||
committed_on: 2009-09-10 19:04:35 | |||
revision: "9" | |||
id: 108 | |||
scmid: | |||
user_id: 3 | |||
repository_id: 10 | |||
committer: dlopper | |||
changesets_010: | |||
commit_date: "2009-09-10" | |||
comments: Same file modified. | |||
committed_on: 2009-09-10 19:04:35 | |||
revision: "10" | |||
id: 109 | |||
scmid: | |||
user_id: 3 | |||
repository_id: 10 | |||
committer: dlopper | |||
@@ -77,6 +77,13 @@ class RepositoriesControllerTest < ActionController::TestCase | |||
) | |||
end | |||
def test_revision | |||
get :revision, :id => 1, :rev => 1 | |||
assert_response :success | |||
assert_not_nil assigns(:changeset) | |||
assert_equal "1", assigns(:changeset).revision | |||
end | |||
def test_revision_with_before_nil_and_afer_normal | |||
get :revision, {:id => 1, :rev => 1} | |||
assert_response :success |
@@ -102,7 +102,7 @@ class RepositoriesSubversionControllerTest < ActionController::TestCase | |||
changesets = assigns(:changesets) | |||
assert_not_nil changesets | |||
assert_equal %w(7 6 5 2), changesets.collect(&:revision) | |||
assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision) | |||
end | |||
def test_entry |
@@ -91,7 +91,7 @@ class ChangesetTest < ActiveSupport::TestCase | |||
end | |||
def test_next_nil | |||
changeset = Changeset.find_by_revision('8') | |||
changeset = Changeset.find_by_revision('10') | |||
assert_nil changeset.next | |||
end | |||
end |
@@ -33,8 +33,8 @@ class RepositorySubversionTest < ActiveSupport::TestCase | |||
@repository.fetch_changesets | |||
@repository.reload | |||
assert_equal 8, @repository.changesets.count | |||
assert_equal 16, @repository.changes.count | |||
assert_equal 10, @repository.changesets.count | |||
assert_equal 18, @repository.changes.count | |||
assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments | |||
end | |||
@@ -46,7 +46,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase | |||
assert_equal 5, @repository.changesets.count | |||
@repository.fetch_changesets | |||
assert_equal 8, @repository.changesets.count | |||
assert_equal 10, @repository.changesets.count | |||
end | |||
def test_latest_changesets_with_limit |