]> source.dussan.org Git - redmine.git/commitdiff
Fixes nil error when svn binary version is unknown (#1607).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 12 Jul 2008 09:06:19 +0000 (09:06 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 12 Jul 2008 09:06:19 +0000 (09:06 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1652 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/abstract_adapter.rb
lib/redmine/scm/adapters/mercurial_adapter.rb
lib/redmine/scm/adapters/subversion_adapter.rb
test/unit/mercurial_adapter_test.rb

index a876de937b41010fce71db3b4d00191039e6345f..c48ed20689187bd9f3f2ff74f4140c97f28d19a5 100644 (file)
@@ -26,15 +26,24 @@ module Redmine
       class AbstractAdapter #:nodoc:
         class << self
           # Returns the version of the scm client
-          # Eg: [1, 5, 0]
+          # Eg: [1, 5, 0] or [] if unknown
           def client_version
-            'Unknown version'
+            []
           end
           
           # Returns the version string of the scm client
-          # Eg: '1.5.0'
+          # Eg: '1.5.0' or 'Unknown version' if unknown
           def client_version_string
-            client_version.is_a?(Array) ? client_version.join('.') : client_version.to_s
+            v = client_version || 'Unknown version'
+            v.is_a?(Array) ? v.join('.') : v.to_s
+          end
+          
+          # Returns true if the current client version is above
+          # or equals the given one
+          # If option is :unknown is set to true, it will return
+          # true if the client version is unknown
+          def client_version_above?(v, options={})
+            ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown])
           end
         end
                 
index a201db933b0431541fb0c8a85095cfb6be5eb3ba..4eed776d8b3f64cec3a9c29c090f722b694fffca 100644 (file)
@@ -30,7 +30,7 @@ module Redmine
         
         class << self
           def client_version
-            @@client_version ||= (hgversion || 'Unknown version')
+            @@client_version ||= (hgversion || [])
           end
           
           def hgversion  
@@ -52,7 +52,7 @@ module Redmine
           end
           
           def template_path_for(version)
-            if version.is_a?(String) or ((version <=> [0,9,5]) > 0)
+            if ((version <=> [0,9,5]) > 0) || version.empty?
               ver = "1.0"
             else
               ver = "0.9.5"
index 90940715daf69295af758c330faa3dad372edb0e..2b7f0192e12ab30cc4735c9a00c6330e4bc1b668 100644 (file)
@@ -28,7 +28,7 @@ module Redmine
         \r
         class << self\r
           def client_version\r
-            @@client_version ||= (svn_binary_version || 'Unknown version')\r
+            @@client_version ||= (svn_binary_version || [])\r
           end\r
           \r
           def svn_binary_version\r
@@ -109,7 +109,7 @@ module Redmine
         \r
         def properties(path, identifier=nil)\r
           # proplist xml output supported in svn 1.5.0 and higher\r
-          return nil if (self.class.client_version <=> [1, 5, 0]) < 0\r
+          return nil unless self.class.client_version_above?([1, 5, 0])\r
           \r
           identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"\r
           cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}"\r
index 4fecebe243296184ac507d1468e287386bbd9b3d..a2673ad42b9f6a8f0d43d258c3a7d7c80c4774b8 100644 (file)
@@ -25,7 +25,7 @@ begin
     def test_template_path
       to_test = { [0,9,5] => "0.9.5",
                   [1,0] => "1.0",
-                  "Unknown version" => "1.0",
+                  [] => "1.0",
                   [1,0,1] => "1.0"}
       
       to_test.each do |v, template|