Class: Redmine::Scm::Adapters::AbstractAdapter
- Inherits:
-
Object
- Object
- Redmine::Scm::Adapters::AbstractAdapter
show all
- Includes:
- Utils::Shell
- Defined in:
- lib/redmine/scm/adapters/abstract_adapter.rb
Defined Under Namespace
Classes: ScmCommandAborted
Class Method Summary
collapse
Instance Method Summary
collapse
-
#adapter_name ⇒ Object
-
#branches ⇒ Object
-
#cat(path, identifier = nil) ⇒ Object
-
#default_branch ⇒ Object
-
#diff(path, identifier_from, identifier_to = nil) ⇒ Object
-
#entries(path = nil, identifier = nil, options = {}) ⇒ Object
Returns an Entries collection or nil if the given path doesn’t exist in the repository.
-
#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.
-
#info ⇒ Object
get info about the svn repository.
-
#initialize(url, root_url = nil, login = nil, password = nil, path_encoding = nil) ⇒ AbstractAdapter
constructor
A new instance of AbstractAdapter.
-
#path_encoding ⇒ Object
-
#properties(path, identifier = nil) ⇒ Object
-
#revisions(path = nil, identifier_from = nil, identifier_to = nil, options = {}) ⇒ Object
-
#root_url ⇒ Object
-
#supports_annotate? ⇒ Boolean
-
#supports_cat? ⇒ Boolean
-
#tags ⇒ Object
-
#url ⇒ Object
-
#valid_name?(name) ⇒ Boolean
-
#with_leading_slash(path) ⇒ Object
-
#with_trailling_slash(path) ⇒ Object
-
#without_leading_slash(path) ⇒ Object
-
#without_trailling_slash(path) ⇒ Object
Constructor Details
permalink
#initialize(url, root_url = nil, login = nil, password = nil, path_encoding = nil) ⇒ AbstractAdapter
Returns a new instance of AbstractAdapter.
[View source] [
View on GitHub]
72
73
74
75
76
77
78
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 72
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
|
Class Method Details
permalink
.client_version ⇒ Object
Returns the version of the scm client Eg: [1, 5, 0] or [] if unknown
[View source] [
View on GitHub]
48
49
50
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 48
def client_version
[]
end
|
permalink
.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
[View source] [
View on GitHub]
63
64
65
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 63
def client_version_above?(v, options={})
((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown])
end
|
permalink
.client_version_string ⇒ Object
Returns the version string of the scm client Eg: ‘1.5.0’ or ‘Unknown version’ if unknown
[View source] [
View on GitHub]
54
55
56
57
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 54
def client_version_string
v = client_version || 'Unknown version'
v.is_a?(Array) ? v.join('.') : v.to_s
end
|
[View source] [
View on GitHub]
241
242
243
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 241
def logger
Rails.logger
end
|
permalink
.shellout(cmd, options = {}, &block) ⇒ Object
[View source] [
View on GitHub]
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 245
def shellout(cmd, options = {}, &block)
if logger && logger.debug?
logger.debug "Shelling out: #{strip_credential(cmd)}"
if stderr_log_file
cmd = "#{cmd} 2>>#{shell_quote(stderr_log_file)}"
end
end
begin
mode = "r+"
IO.popen(cmd, mode) do |io|
io.set_encoding("ASCII-8BIT") if io.respond_to?(:set_encoding)
io.close_write unless options[:write_stdin]
yield(io) if block_given?
end
rescue => e
msg = strip_credential(e.message)
logmsg = "SCM command failed, "
logmsg += "make sure that your SCM command (e.g. svn) is "
logmsg += "in PATH (#{ENV['PATH']})\n"
logmsg += "You can configure your scm commands in config/configuration.yml.\n"
logmsg += "#{strip_credential(cmd)}\n"
logmsg += "with: #{msg}"
logger.error(logmsg)
raise CommandFailed.new(msg)
end
end
|
Instance Method Details
permalink
#cat(path, identifier = nil) ⇒ Object
[View source] [
View on GitHub]
155
156
157
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 155
def cat(path, identifier=nil)
return nil
end
|
permalink
#default_branch ⇒ Object
[View source] [
View on GitHub]
139
140
141
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 139
def default_branch
return nil
end
|
permalink
#diff(path, identifier_from, identifier_to = nil) ⇒ Object
[View source] [
View on GitHub]
151
152
153
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 151
def diff(path, identifier_from, identifier_to=nil)
return nil
end
|
permalink
#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] [
View on GitHub]
127
128
129
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 127
def entries(path=nil, identifier=nil, options={})
return nil
end
|
permalink
#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] [
View on GitHub]
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 111
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?
Entry.new(:path => '', :kind => 'dir')
else
es = entries(search_path, identifier)
es ? es.detect {|e| e.name == search_name} : nil
end
end
|
get info about the svn repository
[View source] [
View on GitHub]
105
106
107
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 105
def info
return nil
end
|
permalink
#properties(path, identifier = nil) ⇒ Object
[View source] [
View on GitHub]
143
144
145
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 143
def properties(path, identifier=nil)
return nil
end
|
permalink
#revisions(path = nil, identifier_from = nil, identifier_to = nil, options = {}) ⇒ Object
[View source] [
View on GitHub]
147
148
149
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 147
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
return nil
end
|
permalink
#supports_annotate? ⇒ Boolean
[View source] [
View on GitHub]
88
89
90
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 88
def supports_annotate?
respond_to?(:annotate)
end
|
[View source] [
View on GitHub]
135
136
137
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 135
def tags
return nil
end
|
permalink
#valid_name?(name) ⇒ Boolean
[View source] [
View on GitHub]
179
180
181
182
183
184
185
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 179
def valid_name?(name)
return true if name.nil?
return true if name.is_a?(Integer) && name > 0
return true if name.is_a?(String) && name =~ /\A[0-9]*\z/
false
end
|
permalink
#with_leading_slash(path) ⇒ Object
[View source] [
View on GitHub]
159
160
161
162
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 159
def with_leading_slash(path)
path ||= ''
(path[0, 1]!="/") ? "/#{path}" : path
end
|
permalink
#with_trailling_slash(path) ⇒ Object
[View source] [
View on GitHub]
164
165
166
167
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 164
def with_trailling_slash(path)
path ||= ''
(path[-1, 1] == "/") ? path : "#{path}/"
end
|
permalink
#without_leading_slash(path) ⇒ Object
[View source] [
View on GitHub]
169
170
171
172
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 169
def without_leading_slash(path)
path ||= ''
path.gsub(%r{^/+}, '')
end
|
permalink
#without_trailling_slash(path) ⇒ Object
[View source] [
View on GitHub]
174
175
176
177
|
# File 'lib/redmine/scm/adapters/abstract_adapter.rb', line 174
def without_trailling_slash(path)
path ||= ''
(path[-1, 1] == "/") ? path[0..-2] : path
end
|