From 5d8d38aa609bb65c0d29a9c9047b482480043508 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Wed, 21 Nov 2012 07:44:29 +0000 Subject: [PATCH] scm: git: fix changesets aren't read after clear_changesets call (#12409) git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10856 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/repository.rb | 4 ++++ app/models/repository/git.rb | 10 ++++++++++ test/unit/repository_git_test.rb | 34 ++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/app/models/repository.rb b/app/models/repository.rb index 9a6891a90..1ef73a453 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -427,5 +427,9 @@ class Repository < ActiveRecord::Base connection.delete("DELETE FROM #{ci} WHERE #{ci}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") connection.delete("DELETE FROM #{cp} WHERE #{cp}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") connection.delete("DELETE FROM #{cs} WHERE #{cs}.repository_id = #{id}") + clear_extra_info_of_changesets + end + + def clear_extra_info_of_changesets end end diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 064a67494..037be94e5 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -255,4 +255,14 @@ class Repository::Git < Repository :order => 'committed_on DESC' ) end + + def clear_extra_info_of_changesets + v = extra_info["extra_report_last_commit"] + write_attribute(:extra_info, nil) + h = {} + h["extra_report_last_commit"] = v + merge_extra_info(h) + self.save + end + private :clear_extra_info_of_changesets end diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index cfb0f486c..fa2f8bce6 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -217,6 +217,40 @@ class RepositoryGitTest < ActiveSupport::TestCase assert_equal h1, h2 end + def test_keep_extra_report_last_commit_in_clear_changesets + assert_nil @repository.extra_info + h = {} + h["extra_report_last_commit"] = 1 + @repository.merge_extra_info(h) + @repository.save + @project.reload + + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @project.reload + + assert_equal NUM_REV, @repository.changesets.count + @repository.send(:clear_changesets) + assert_equal 1, @repository.extra_info.size + assert_equal 1, @repository.extra_info["extra_report_last_commit"] + end + + def test_refetch_after_clear_changesets + assert_nil @repository.extra_info + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @project.reload + assert_equal NUM_REV, @repository.changesets.count + + @repository.send(:clear_changesets) + @project.reload + assert_equal 0, @repository.changesets.count + + @repository.fetch_changesets + @project.reload + assert_equal NUM_REV, @repository.changesets.count + end + def test_parents assert_equal 0, @repository.changesets.count @repository.fetch_changesets