Class: Redmine::Scm::Adapters::AbstractAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/redmine/scm/adapters/abstract_adapter.rb

Overview

:nodoc:

Defined Under Namespace

Classes: ScmCommandAborted

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, root_url = nil, login = nil, password = nil, path_encoding = nil) ⇒ AbstractAdapter

Returns a new instance of AbstractAdapter

[View source]

76
77
78
79
80
81
82
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 76

def initialize(url, root_url=nil, =nil, password=nil,
               path_encoding=nil)
  @url = url
  @login =  if  && !.empty?
  @password = (password || "") if @login
  @root_url = root_url.blank? ? retrieve_root_url : root_url
end

Class Method Details

.client_availableObject

[View source]

63
64
65
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 63

def client_available
  true
end

.client_commandObject

[View source]

30
31
32
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 30

def client_command
  ""
end

.client_versionObject

Returns the version of the scm client Eg: [1, 5, 0] or [] if unknown

[View source]

44
45
46
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 44

def client_version
  []
end

.client_version_above?(v, options = {}) ⇒ Boolean

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

Returns:

  • (Boolean)
[View source]

59
60
61
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 59

def client_version_above?(v, options={})
  ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown])
end

.client_version_stringObject

Returns the version string of the scm client Eg: '1.5.0' or 'Unknown version' if unknown

[View source]

50
51
52
53
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 50

def client_version_string
  v = client_version || 'Unknown version'
  v.is_a?(Array) ? v.join('.') : v.to_s
end

.shell_quote(str) ⇒ Object

[View source]

67
68
69
70
71
72
73
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 67

def shell_quote(str)
  if Redmine::Platform.mswin?
    '"' + str.gsub(/"/, '\\"') + '"'
  else
    "'" + str.gsub(/'/, "'\"'\"'") + "'"
  end
end

.shell_quote_commandObject

[View source]

34
35
36
37
38
39
40
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 34

def shell_quote_command
  if Redmine::Platform.mswin? && RUBY_PLATFORM == 'java'
    client_command
  else
    shell_quote(client_command)
  end
end

Instance Method Details

#adapter_nameObject

[View source]

84
85
86
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 84

def adapter_name
  'Abstract'
end

#branchesObject

[View source]

135
136
137
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 135

def branches
  return nil
end

#cat(path, identifier = nil) ⇒ Object

[View source]

159
160
161
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 159

def cat(path, identifier=nil)
  return nil
end

#default_branchObject

[View source]

143
144
145
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 143

def default_branch
  return nil
end

#diff(path, identifier_from, identifier_to = nil) ⇒ Object

[View source]

155
156
157
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 155

def diff(path, identifier_from, identifier_to=nil)
  return nil
end

#entries(path = nil, identifier = nil, options = {}) ⇒ Object

Returns an Entries collection or nil if the given path doesn't exist in the repository

[View source]

131
132
133
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 131

def entries(path=nil, identifier=nil, options={})
  return nil
end

#entry(path = nil, identifier = nil) ⇒ Object

Returns the entry identified by path and revision identifier or nil if entry doesn't exist in the repository

[View source]

115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 115

def entry(path=nil, identifier=nil)
  parts = path.to_s.split(%r{[\/\\]}).select {|n| !n.blank?}
  search_path = parts[0..-2].join('/')
  search_name = parts[-1]
  if search_path.blank? && search_name.blank?
    # Root entry
    Entry.new(:path => '', :kind => 'dir')
  else
    # Search for the entry in the parent directory
    es = entries(search_path, identifier)
    es ? es.detect {|e| e.name == search_name} : nil
  end
end

#infoObject

get info about the svn repository

[View source]

109
110
111
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 109

def info
  return nil
end

#path_encodingObject

[View source]

104
105
106
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 104

def path_encoding
  nil
end

#properties(path, identifier = nil) ⇒ Object

[View source]

147
148
149
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 147

def properties(path, identifier=nil)
  return nil
end

#revisions(path = nil, identifier_from = nil, identifier_to = nil, options = {}) ⇒ Object

[View source]

151
152
153
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 151

def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
  return nil
end

#root_urlObject

[View source]

96
97
98
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 96

def root_url
  @root_url
end

#shell_quote(str) ⇒ Object

[View source]

183
184
185
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 183

def shell_quote(str)
  self.class.shell_quote(str)
end

#supports_annotate?Boolean

Returns:

  • (Boolean)
[View source]

92
93
94
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 92

def supports_annotate?
  respond_to?('annotate')
end

#supports_cat?Boolean

Returns:

  • (Boolean)
[View source]

88
89
90
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 88

def supports_cat?
  true
end

#tagsObject

[View source]

139
140
141
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 139

def tags
  return nil
end

#urlObject

[View source]

100
101
102
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 100

def url
  @url
end

#with_leading_slash(path) ⇒ Object

[View source]

163
164
165
166
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 163

def with_leading_slash(path)
  path ||= ''
  (path[0,1]!="/") ? "/#{path}" : path
end

#with_trailling_slash(path) ⇒ Object

[View source]

168
169
170
171
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 168

def with_trailling_slash(path)
  path ||= ''
  (path[-1,1] == "/") ? path : "#{path}/"
end

#without_leading_slash(path) ⇒ Object

[View source]

173
174
175
176
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 173

def without_leading_slash(path)
  path ||= ''
  path.gsub(%r{^/+}, '')
end

#without_trailling_slash(path) ⇒ Object

[View source]

178
179
180
181
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 178

def without_trailling_slash(path)
  path ||= ''
  (path[-1,1] == "/") ? path[0..-2] : path
end