Parent

Class Index [+]

Quicksearch

Capistrano::Deploy::SCM::Base

The ancestor class for all Capistrano SCM implementations. It provides minimal infrastructure for subclasses to build upon and override.

Note that subclasses that implement this abstract class only return the commands that need to be executed—they do not execute the commands themselves. In this way, the deployment method may execute the commands either locally or remotely, as necessary.

Attributes

configuration[R]

The options available for this SCM instance to reference. Should be treated like a hash.

Public Class Methods

default_command(value=nil) click to toggle source

If no parameters are given, it returns the current configured name of the command-line utility of this SCM. If a parameter is given, the defeault command is set to that value.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 17
17:           def default_command(value=nil)
18:             if value
19:               @default_command = value
20:             else
21:               @default_command
22:             end
23:           end
new(configuration={}) click to toggle source

Creates a new SCM instance with the given configuration options.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 44
44:         def initialize(configuration={})
45:           @configuration = configuration
46:         end

Public Instance Methods

checkout(revision, destination) click to toggle source

Checkout a copy of the repository, at the given revision, to the given destination. The checkout is suitable for doing development work in, e.g. allowing subsequent commits and updates.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 87
87:         def checkout(revision, destination)
88:           raise NotImplementedError, "`checkout' is not implemented by #{self.class.name}"
89:         end
command() click to toggle source

Returns the name of the command-line utility for this SCM. It first looks at the :scm_command variable, and if it does not exist, it then falls back to whatever was defined by default_command.

If scm_command is set to :default, the default_command will be returned.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 147
147:         def command
148:           command = variable(:scm_command)
149:           command = nil if command == :default
150:           command || default_command
151:         end
diff(from, to=nil) click to toggle source

Compute the difference between the two revisions, from and to.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 98
 98:         def diff(from, to=nil)
 99:           raise NotImplementedError, "`diff' is not implemented by #{self.class.name}"
100:         end
handle_data(state, stream, text) click to toggle source

Should analyze the given text and determine whether or not a response is expected, and if so, return the appropriate response. If no response is expected, return nil. The state parameter is a hash that may be used to preserve state between calls. This method is used to define how Capistrano should respond to common prompts and messages from the SCM, like password prompts and such. By default, the output is simply displayed.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 136
136:         def handle_data(state, stream, text)
137:           logger.info "[#{stream}] #{text}"
138:           nil
139:         end
head() click to toggle source

Returns the string used to identify the latest revision in the repository. This will be passed as the “revision” parameter of the methods below.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 80
80:         def head
81:           raise NotImplementedError, "`head' is not implemented by #{self.class.name}"
82:         end
local() click to toggle source

Returns a proxy that wraps the SCM instance and forces it to operate in “local” mode, which changes how variables are looked up in the configuration. Normally, if the value of a variable “foo” is needed, it is queried for in the configuration as “foo”. However, in “local” mode, first “local_foo“ would be looked for, and only if it is not found would “foo” be used. This allows for both (e.g.) “scm_command“ and “local_scm_command“ to be set, if the two differ.

Alternatively, it may be called with a block, and for the duration of the block, all requests on this configuration object will be considered local.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 59
59:         def local
60:           if block_given?
61:             begin
62:               saved, @local_mode = @local_mode, true
63:               yield
64:             ensure
65:               @local_mode = saved
66:             end
67:           else
68:             LocalProxy.new(self)
69:           end
70:         end
local?() click to toggle source

Returns true if running in “local” mode. See #.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 73
73:         def local?
74:           @local_mode
75:         end
log(from, to=nil) click to toggle source

Return a log of all changes between the two specified revisions, from and to, inclusive.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 104
104:         def log(from, to=nil)
105:           raise NotImplementedError, "`log' is not implemented by #{self.class.name}"
106:         end
next_revision(revision) click to toggle source

Returns the revision number immediately following revision, if at all possible. A block should always be passed to this method, which accepts a command to invoke and returns the result, although a particular SCM’s implementation is not required to invoke the block.

By default, this method simply returns the revision itself. If a particular SCM is able to determine a subsequent revision given a revision identifier, it should override this method.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 125
125:         def next_revision(revision)
126:           revision
127:         end
query_revision(revision) click to toggle source

If the given revision represents a “real” revision, this should simply return the revision value. If it represends a pseudo-revision (like Subversions “HEAD” identifier), it should yield a string containing the commands that, when executed will return a string that this method can then extract the real revision from.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 113
113:         def query_revision(revision)
114:           raise NotImplementedError, "`query_revision' is not implemented by #{self.class.name}"
115:         end
scm(*args) click to toggle source

A helper method that can be used to define SCM commands naturally. It returns a single string with all arguments joined by spaces, with the scm command prefixed onto it.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 156
156:         def scm(*args)
157:           [command, *args].compact.join(" ")
158:         end
sync(revision, destination) click to toggle source

Resynchronize the working copy in destination to the specified revision.

    # File lib/capistrano/recipes/deploy/scm/base.rb, line 93
93:         def sync(revision, destination)
94:           raise NotImplementedError, "`sync' is not implemented by #{self.class.name}"
95:         end

Private Instance Methods

arguments(command = :all) click to toggle source
     # File lib/capistrano/recipes/deploy/scm/base.rb, line 189
189:           def arguments(command = :all)
190:             value = variable(:scm_arguments)
191:             if value.is_a?(Hash)
192:               value = value[command]
193:             end
194:             value
195:           end
default_command() click to toggle source

A helper for accessing the default command name for this SCM. It simply delegates to the class’ default_command method.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 180
180:           def default_command
181:             self.class.default_command
182:           end
logger() click to toggle source

A reference to a Logger instance that the SCM can use to log activity.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 174
174:           def logger
175:             @logger ||= variable(:logger) || Capistrano::Logger.new(:output => STDOUT)
176:           end
repository() click to toggle source

A convenience method for accessing the declared repository value.

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 185
185:           def repository
186:             variable(:repository)
187:           end
variable(name, default = nil) click to toggle source

A helper for accessing variable values, which takes into consideration the current mode (“normal” vs. “local”).

     # File lib/capistrano/recipes/deploy/scm/base.rb, line 164
164:           def variable(name, default = nil)
165:             if local? && configuration.exists?("local_#{name}".to_sym)
166:               return configuration["local_#{name}".to_sym].nil? ? default : configuration["local_#{name}".to_sym]
167:             else
168:               configuration[name].nil? ? default : configuration[name]
169:             end
170:           end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.