'_' is SQL "like" special character. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4801 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
9c070fe092
commit
e9ab2de1e7
|
@ -117,7 +117,7 @@ class Repository::Cvs < Repository
|
||||||
# we use a temporaray revision number here (just for inserting)
|
# we use a temporaray revision number here (just for inserting)
|
||||||
# later on, we calculate a continous positive number
|
# later on, we calculate a continous positive number
|
||||||
cs = Changeset.create(:repository => self,
|
cs = Changeset.create(:repository => self,
|
||||||
:revision => "_#{tmp_rev_num}",
|
:revision => "tmp#{tmp_rev_num}",
|
||||||
:committer => revision.author,
|
:committer => revision.author,
|
||||||
:committed_on => revision.time,
|
:committed_on => revision.time,
|
||||||
:comments => revision.message)
|
:comments => revision.message)
|
||||||
|
@ -144,11 +144,12 @@ class Repository::Cvs < Repository
|
||||||
|
|
||||||
# Renumber new changesets in chronological order
|
# Renumber new changesets in chronological order
|
||||||
changesets.find(
|
changesets.find(
|
||||||
:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'"
|
:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'"
|
||||||
).each do |changeset|
|
).each do |changeset|
|
||||||
changeset.update_attribute :revision, next_revision_number
|
changeset.update_attribute :revision, next_revision_number
|
||||||
end
|
end
|
||||||
end # transaction
|
end # transaction
|
||||||
|
@current_revision_number = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -156,7 +157,9 @@ class Repository::Cvs < Repository
|
||||||
# Returns the next revision number to assign to a CVS changeset
|
# Returns the next revision number to assign to a CVS changeset
|
||||||
def next_revision_number
|
def next_revision_number
|
||||||
# Need to retrieve existing revision numbers to sort them as integers
|
# Need to retrieve existing revision numbers to sort them as integers
|
||||||
@current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0)
|
sql = "SELECT revision FROM #{Changeset.table_name} "
|
||||||
|
sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'"
|
||||||
|
@current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0)
|
||||||
@current_revision_number += 1
|
@current_revision_number += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -47,13 +47,29 @@ class RepositoryCvsTest < ActiveSupport::TestCase
|
||||||
def test_fetch_changesets_incremental
|
def test_fetch_changesets_incremental
|
||||||
assert_equal 0, @repository.changesets.count
|
assert_equal 0, @repository.changesets.count
|
||||||
@repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
# Remove the 3 latest changesets
|
# Remove changesets with revision > 3
|
||||||
@repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy)
|
@repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3}
|
||||||
@repository.reload
|
@repository.reload
|
||||||
assert_equal 2, @repository.changesets.count
|
assert_equal 3, @repository.changesets.count
|
||||||
|
assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision)
|
||||||
|
|
||||||
|
rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
|
||||||
|
assert_equal '3', rev3_commit.revision
|
||||||
|
# 2007-12-14 01:27:22 +0900
|
||||||
|
rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
|
||||||
|
assert_equal rev3_committed_on, rev3_commit.committed_on
|
||||||
|
latest_rev = @repository.latest_changeset
|
||||||
|
assert_equal rev3_committed_on, latest_rev.committed_on
|
||||||
|
|
||||||
@repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
assert_equal 5, @repository.changesets.count
|
assert_equal 5, @repository.changesets.count
|
||||||
|
|
||||||
|
assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision)
|
||||||
|
rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
|
||||||
|
# 2007-12-14 01:30:01 +0900
|
||||||
|
rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
|
||||||
|
assert_equal rev5_committed_on, rev5_commit.committed_on
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_deleted_files_should_not_be_listed
|
def test_deleted_files_should_not_be_listed
|
||||||
|
|
Loading…
Reference in New Issue