summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/repository.rb11
-rw-r--r--lib/redmine/scm/adapters/abstract_adapter.rb15
-rw-r--r--lib/redmine/scm/adapters/cvs_adapter.rb3
-rw-r--r--lib/redmine/scm/adapters/darcs_adapter.rb3
-rw-r--r--lib/redmine/scm/adapters/filesystem_adapter.rb5
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb4
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