From 9937ac677f388d84f689c54539ee5f833cec3d49 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Thu, 24 Feb 2011 05:58:59 +0000 Subject: [PATCH] scm: update adapter initialize() to use path encoding (#2664, #2274). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4941 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/repository.rb | 11 ++++++----- lib/redmine/scm/adapters/abstract_adapter.rb | 15 ++++++++------- lib/redmine/scm/adapters/cvs_adapter.rb | 3 ++- lib/redmine/scm/adapters/darcs_adapter.rb | 3 ++- lib/redmine/scm/adapters/filesystem_adapter.rb | 5 +++-- lib/redmine/scm/adapters/mercurial_adapter.rb | 4 ++-- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index d1e3d8b2f..c9d7d0dbe 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -26,12 +26,12 @@ class Repository < ActiveRecord::Base # Checks if the SCM is enabled when creating a repository validate_on_create { |r| r.errors.add(:type, :invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) } - + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end - + # Removes leading and trailing whitespace def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) @@ -42,11 +42,12 @@ class Repository < ActiveRecord::Base end def scm - @scm ||= self.scm_adapter.new url, root_url, login, password + @scm ||= self.scm_adapter.new(url, root_url, + login, password, path_encoding) update_attribute(:root_url, @scm.root_url) if root_url.blank? @scm end - + def scm_name self.class.scm_name end @@ -248,7 +249,7 @@ class Repository < ActiveRecord::Base end private - + def before_save # Strips url and root_url url.strip! diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 2bd82f5bc..3f9bc0ef1 100644 --- a/lib/redmine/scm/adapters/abstract_adapter.rb +++ b/lib/redmine/scm/adapters/abstract_adapter.rb @@ -34,14 +34,14 @@ module Redmine def client_version [] end - + # Returns the version string of the scm client # Eg: '1.5.0' or 'Unknown version' if unknown def client_version_string 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 @@ -63,17 +63,18 @@ module Redmine end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @root_url = root_url.blank? ? retrieve_root_url : root_url end - + def adapter_name 'Abstract' end - + def supports_cat? true end @@ -81,11 +82,11 @@ module Redmine def supports_annotate? respond_to?('annotate') end - + def root_url @root_url end - + def url @url end diff --git a/lib/redmine/scm/adapters/cvs_adapter.rb b/lib/redmine/scm/adapters/cvs_adapter.rb index 25d4e420e..762e5c68d 100644 --- a/lib/redmine/scm/adapters/cvs_adapter.rb +++ b/lib/redmine/scm/adapters/cvs_adapter.rb @@ -62,7 +62,8 @@ module Redmine # root_url -> the good old, sometimes damned, CVSROOT # login -> unnecessary # password -> unnecessary too - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login diff --git a/lib/redmine/scm/adapters/darcs_adapter.rb b/lib/redmine/scm/adapters/darcs_adapter.rb index 279d503f0..9b79e653f 100644 --- a/lib/redmine/scm/adapters/darcs_adapter.rb +++ b/lib/redmine/scm/adapters/darcs_adapter.rb @@ -57,7 +57,8 @@ module Redmine end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @root_url = url end diff --git a/lib/redmine/scm/adapters/filesystem_adapter.rb b/lib/redmine/scm/adapters/filesystem_adapter.rb index 477629536..3f3f131e2 100644 --- a/lib/redmine/scm/adapters/filesystem_adapter.rb +++ b/lib/redmine/scm/adapters/filesystem_adapter.rb @@ -32,9 +32,10 @@ module Redmine end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = with_trailling_slash(url) - @path_encoding = 'UTF-8' + @path_encoding = path_encoding || 'UTF-8' end def format_path_ends(path, leading=true, trailling=true) diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index 9b12dd383..11eb66b64 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -81,9 +81,9 @@ module Redmine end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) super - @path_encoding = 'UTF-8' + @path_encoding = path_encoding || 'UTF-8' end def info -- 2.39.5