Class: Redmine::Scm::Adapters::FilesystemAdapter
- Inherits:
-
AbstractAdapter
- Object
- AbstractAdapter
- Redmine::Scm::Adapters::FilesystemAdapter
- Defined in:
- lib/redmine/scm/adapters/filesystem_adapter.rb
Class Method Summary collapse
Instance Method Summary collapse
- #cat(path, identifier = nil) ⇒ Object
- #entries(path = "", identifier = nil) ⇒ Object
- #format_path_ends(path, leading = true, trailling = true) ⇒ Object
- #info ⇒ Object
-
#initialize(url, root_url = nil, login = nil, password = nil, path_encoding = nil) ⇒ FilesystemAdapter
constructor
A new instance of FilesystemAdapter.
Methods inherited from AbstractAdapter
#adapter_name, #branches, client_command, client_version, client_version_above?, client_version_string, #default_branch, #diff, #entry, #properties, #revisions, #root_url, shell_quote, #shell_quote, #supports_annotate?, #supports_cat?, #tags, #url, #with_leading_slash, #with_trailling_slash, #without_leading_slash, #without_trailling_slash
Constructor Details
#initialize(url, root_url = nil, login = nil, password = nil, path_encoding = nil) ⇒ FilesystemAdapter
Returns a new instance of FilesystemAdapter.
35 36 37 38 39 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 35 def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) @url = with_trailling_slash(url) @path_encoding = path_encoding || 'UTF-8' end |
Class Method Details
.client_available ⇒ Object
30 31 32 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 30 def client_available true end |
Instance Method Details
#cat(path, identifier = nil) ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 92 def cat(path, identifier=nil) p = scm_iconv(@path_encoding, 'UTF-8', target(path)) File.new(p, "rb").read rescue => err logger.error "scm: filesystem: error: #{err.}" raise CommandFailed.new(err.) end |
#entries(path = "", identifier = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 57 def entries(path="", identifier=nil) entries = Entries.new trgt_utf8 = target(path) trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8) Dir.new(trgt).each do |e1| e_utf8 = scm_iconv('UTF-8', @path_encoding, e1) next if e_utf8.blank? relative_path_utf8 = format_path_ends( (format_path_ends(path,false,true) + e_utf8),false,false) t1_utf8 = target(relative_path_utf8) t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8) relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8) e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8) if File.exist?(t1) and # paranoid test %w{file directory}.include?(File.ftype(t1)) and # avoid special types not File.basename(e1).match(/^\.+$/) # avoid . and .. p1 = File.readable?(t1) ? relative_path : "" utf_8_path = scm_iconv('UTF-8', @path_encoding, p1) entries << Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)), # below : list unreadable files, but dont link them. :path => utf_8_path, :kind => (File.directory?(t1) ? 'dir' : 'file'), :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), :lastrev => Revision.new({:time => (File.mtime(t1)) }) }) end end entries.sort_by_name rescue => err logger.error "scm: filesystem: error: #{err.}" raise CommandFailed.new(err.) end |
#format_path_ends(path, leading = true, trailling = true) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 41 def format_path_ends(path, leading=true, trailling=true) path = leading ? with_leading_slash(path) : without_leading_slash(path) trailling ? with_trailling_slash(path) : without_trailling_slash(path) end |
#info ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/redmine/scm/adapters/filesystem_adapter.rb', line 48 def info info = Info.new({:root_url => target(), :lastrev => nil }) info rescue CommandFailed return nil end |