Fixed: RepositoriesController#revision may show wrong revision (#3779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2898 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
e89d4825dd
commit
30ad78e57d
|
@ -130,7 +130,7 @@ class RepositoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def revision
|
def revision
|
||||||
@changeset = @repository.changesets.find(:first, :conditions => ["revision LIKE ?", @rev + '%'])
|
@changeset = @repository.find_changeset_by_name(@rev)
|
||||||
raise ChangesetNotFound unless @changeset
|
raise ChangesetNotFound unless @changeset
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -92,6 +92,11 @@ class Repository < ActiveRecord::Base
|
||||||
path
|
path
|
||||||
end
|
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
|
def latest_changeset
|
||||||
@latest_changeset ||= changesets.find(:first)
|
@latest_changeset ||= changesets.find(:first)
|
||||||
end
|
end
|
||||||
|
|
|
@ -81,4 +81,24 @@ changesets_008:
|
||||||
user_id: 3
|
user_id: 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
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
|
||||||
|
|
Binary file not shown.
|
@ -77,6 +77,13 @@ class RepositoriesControllerTest < ActionController::TestCase
|
||||||
)
|
)
|
||||||
end
|
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
|
def test_revision_with_before_nil_and_afer_normal
|
||||||
get :revision, {:id => 1, :rev => 1}
|
get :revision, {:id => 1, :rev => 1}
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
|
|
@ -102,7 +102,7 @@ class RepositoriesSubversionControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
changesets = assigns(:changesets)
|
changesets = assigns(:changesets)
|
||||||
assert_not_nil 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
|
end
|
||||||
|
|
||||||
def test_entry
|
def test_entry
|
||||||
|
|
|
@ -91,7 +91,7 @@ class ChangesetTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_next_nil
|
def test_next_nil
|
||||||
changeset = Changeset.find_by_revision('8')
|
changeset = Changeset.find_by_revision('10')
|
||||||
assert_nil changeset.next
|
assert_nil changeset.next
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,8 +33,8 @@ class RepositorySubversionTest < ActiveSupport::TestCase
|
||||||
@repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
@repository.reload
|
@repository.reload
|
||||||
|
|
||||||
assert_equal 8, @repository.changesets.count
|
assert_equal 10, @repository.changesets.count
|
||||||
assert_equal 16, @repository.changes.count
|
assert_equal 18, @repository.changes.count
|
||||||
assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments
|
assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase
|
||||||
assert_equal 5, @repository.changesets.count
|
assert_equal 5, @repository.changesets.count
|
||||||
|
|
||||||
@repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
assert_equal 8, @repository.changesets.count
|
assert_equal 10, @repository.changesets.count
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_latest_changesets_with_limit
|
def test_latest_changesets_with_limit
|
||||||
|
|
Loading…
Reference in New Issue