##// END OF EJS Templates
scm: cvs: change temporary revision number from "_N" to "tmpN" (#996, #3761, #6706)....
Toshi MARUYAMA -
r4681:e9ab2de1e797
parent child
Show More
@@ -117,7 +117,7 class Repository::Cvs < Repository
117 # we use a temporaray revision number here (just for inserting)
117 # we use a temporaray revision number here (just for inserting)
118 # later on, we calculate a continous positive number
118 # later on, we calculate a continous positive number
119 cs = Changeset.create(:repository => self,
119 cs = Changeset.create(:repository => self,
120 :revision => "_#{tmp_rev_num}",
120 :revision => "tmp#{tmp_rev_num}",
121 :committer => revision.author,
121 :committer => revision.author,
122 :committed_on => revision.time,
122 :committed_on => revision.time,
123 :comments => revision.message)
123 :comments => revision.message)
@@ -144,11 +144,12 class Repository::Cvs < Repository
144
144
145 # Renumber new changesets in chronological order
145 # Renumber new changesets in chronological order
146 changesets.find(
146 changesets.find(
147 :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'"
147 :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'"
148 ).each do |changeset|
148 ).each do |changeset|
149 changeset.update_attribute :revision, next_revision_number
149 changeset.update_attribute :revision, next_revision_number
150 end
150 end
151 end # transaction
151 end # transaction
152 @current_revision_number = nil
152 end
153 end
153
154
154 private
155 private
@@ -156,7 +157,9 class Repository::Cvs < Repository
156 # Returns the next revision number to assign to a CVS changeset
157 # Returns the next revision number to assign to a CVS changeset
157 def next_revision_number
158 def next_revision_number
158 # Need to retrieve existing revision numbers to sort them as integers
159 # Need to retrieve existing revision numbers to sort them as integers
159 @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)
160 sql = "SELECT revision FROM #{Changeset.table_name} "
161 sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'"
162 @current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0)
160 @current_revision_number += 1
163 @current_revision_number += 1
161 end
164 end
162 end
165 end
@@ -47,13 +47,29 class RepositoryCvsTest < ActiveSupport::TestCase
47 def test_fetch_changesets_incremental
47 def test_fetch_changesets_incremental
48 assert_equal 0, @repository.changesets.count
48 assert_equal 0, @repository.changesets.count
49 @repository.fetch_changesets
49 @repository.fetch_changesets
50 # Remove the 3 latest changesets
50 # Remove changesets with revision > 3
51 @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy)
51 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3}
52 @repository.reload
52 @repository.reload
53 assert_equal 2, @repository.changesets.count
53 assert_equal 3, @repository.changesets.count
54
54 assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision)
55
56 rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
57 assert_equal '3', rev3_commit.revision
58 # 2007-12-14 01:27:22 +0900
59 rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
60 assert_equal rev3_committed_on, rev3_commit.committed_on
61 latest_rev = @repository.latest_changeset
62 assert_equal rev3_committed_on, latest_rev.committed_on
63
55 @repository.fetch_changesets
64 @repository.fetch_changesets
65 @repository.reload
56 assert_equal 5, @repository.changesets.count
66 assert_equal 5, @repository.changesets.count
67
68 assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision)
69 rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
70 # 2007-12-14 01:30:01 +0900
71 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
72 assert_equal rev5_committed_on, rev5_commit.committed_on
57 end
73 end
58
74
59 def test_deleted_files_should_not_be_listed
75 def test_deleted_files_should_not_be_listed
General Comments 0
You need to be logged in to leave comments. Login now