]> source.dussan.org Git - redmine.git/commitdiff
Merged r14142 and r14143 (#19400).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 21 Mar 2015 08:26:22 +0000 (08:26 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 21 Mar 2015 08:26:22 +0000 (08:26 +0000)
git-svn-id: http://svn.redmine.org/redmine/branches/3.0-stable@14147 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository.rb
app/models/repository/git.rb
test/unit/repository_test.rb

index 21e97bb6e87bcedf0c1f909a0c607cf6740da360..472bf615b587782fd3ec7532747e83f66103cdf4 100644 (file)
@@ -38,7 +38,7 @@ class Repository < ActiveRecord::Base
 
   validates_length_of :password, :maximum => 255, :allow_nil => true
   validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true
-  validates_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true
+  validates_uniqueness_of :identifier, :scope => :project_id
   validates_exclusion_of :identifier, :in => %w(browse show entry raw changes annotate diff statistics graph revisions revision)
   # donwcase letters, digits, dashes, underscores but not digits only
   validates_format_of :identifier, :with => /\A(?!\d+$)[a-z0-9\-_]*\z/, :allow_blank => true
index 18797315f9b53daed6875f1565dc7907b4020569..c71801f2c30897d3d2310ea48ac9d0fa4e6feecc 100644 (file)
@@ -209,7 +209,7 @@ class Repository::Git < Repository
     end
     h["heads"] = repo_heads.dup
     merge_extra_info(h)
-    self.save
+    save(:validate => false)
   end
   private :save_revisions
 
@@ -251,7 +251,7 @@ class Repository::Git < Repository
     h = {}
     h["extra_report_last_commit"] = v
     merge_extra_info(h)
-    self.save
+    save(:validate => false)
   end
   private :clear_extra_info_of_changesets
 end
index debac51b04d1ce1390fadae813bda4dec3b90dbf..8f8cb9a0a405284b59b19b5b8406a681dcbd07bd 100644 (file)
@@ -76,6 +76,24 @@ class RepositoryTest < ActiveSupport::TestCase
     assert_equal repository, project.repository
   end
 
+  def test_2_repositories_with_same_identifier_in_different_projects_should_be_valid
+    Repository::Subversion.create!(:project_id => 2, :identifier => 'foo', :url => 'file:///foo')
+    r = Repository::Subversion.new(:project_id => 3, :identifier => 'foo', :url => 'file:///bar')
+    assert r.save
+  end
+
+  def test_2_repositories_with_same_identifier_should_not_be_valid
+    Repository::Subversion.create!(:project_id => 3, :identifier => 'foo', :url => 'file:///foo')
+    r = Repository::Subversion.new(:project_id => 3, :identifier => 'foo', :url => 'file:///bar')
+    assert !r.save
+  end
+
+  def test_2_repositories_with_blank_identifier_should_not_be_valid
+    Repository::Subversion.create!(:project_id => 3, :identifier => '', :url => 'file:///foo')
+    r = Repository::Subversion.new(:project_id => 3, :identifier => '', :url => 'file:///bar')
+    assert !r.save
+  end
+
   def test_first_repository_should_be_set_as_default
     repository1 = Repository::Subversion.new(
                       :project => Project.find(3),