Class: Capistrano::Deploy::SCM::Subversion

Class | Capistrano::Deploy::SCM::Subversion
In: | lib/capistrano/recipes/deploy/scm/subversion.rb lib/capistrano/recipes/deploy/scm/subversion.rb
Parent: | Base

Implements the Capistrano SCM interface for the Subversion revision control system (subversion.tigris.org).

### Methods

checkout checkout diff diff export export handle_data handle_data head head log log next_revision next_revision query_revision query_revision sync sync

### Public Instance methods

checkout(revision, destination)

Returns the command that will check out the given revision to the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 23
    23:         def checkout(revision, destination)
    24:           scm :checkout, arguments, verbose, authentication, "-r#{revision}", repository, destination
    25:         end

checkout(revision, destination)

Returns the command that will check out the given revision to the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 23
    23:         def checkout(revision, destination)
    24:           scm :checkout, arguments, verbose, authentication, "-r#{revision}", repository, destination
    25:         end

diff(from, to=nil)

Returns the command that will do an "svn diff" for the two revisions.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 40
    40:         def diff(from, to=nil)
    41:           scm :diff, repository, authentication, "-r#{from}:#{to || head}"
    42:         end

diff(from, to=nil)

Returns the command that will do an "svn diff" for the two revisions.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 40
    40:         def diff(from, to=nil)
    41:           scm :diff, repository, authentication, "-r#{from}:#{to || head}"
    42:         end

export(revision, destination)

Returns the command that will do an "svn export" of the given revision to the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 35
    35:         def export(revision, destination)
    36:           scm :export, arguments, verbose, authentication, "-r#{revision}", repository, destination
    37:         end

export(revision, destination)

Returns the command that will do an "svn export" of the given revision to the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 35
    35:         def export(revision, destination)
    36:           scm :export, arguments, verbose, authentication, "-r#{revision}", repository, destination
    37:         end

handle_data(state, stream, text)

Determines what the response should be for a particular bit of text from the SCM. Password prompts, connection requests, passphrases, etc. are handled here.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 70
    70:         def handle_data(state, stream, text)
    71:           host = state[:channel][:host]
    72:                 logger.info "[#{host} :: #{stream}] #{text}"
    73:           case text
    74:           when /\bpassword.*:/i
    75:             # subversion is prompting for a password
    76:             "#{scm_password_prompt}\n"
    77:           when %r{\(yes/no\)}
    78:             # subversion is asking whether or not to connect
    79:             "yes\n"
    80:           when /passphrase/i
    81:             # subversion is asking for the passphrase for the user's key
    82:             "#{variable(:scm_passphrase)}\n"
    83:           when /The entry \'(.+?)\' is no longer a directory/
    84:             raise Capistrano::Error, "subversion can't update because directory '#{$1}' was replaced. Please add it to svn:ignore."
    85:           when /accept \(t\)emporarily/
    86:             # subversion is asking whether to accept the certificate
    87:             "t\n"
    88:           end
    89:         end

handle_data(state, stream, text)

Determines what the response should be for a particular bit of text from the SCM. Password prompts, connection requests, passphrases, etc. are handled here.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 70
    70:         def handle_data(state, stream, text)
    71:           host = state[:channel][:host]
    72:                 logger.info "[#{host} :: #{stream}] #{text}"
    73:           case text
    74:           when /\bpassword.*:/i
    75:             # subversion is prompting for a password
    76:             "#{scm_password_prompt}\n"
    77:           when %r{\(yes/no\)}
    78:             # subversion is asking whether or not to connect
    79:             "yes\n"
    80:           when /passphrase/i
    81:             # subversion is asking for the passphrase for the user's key
    82:             "#{variable(:scm_passphrase)}\n"
    83:           when /The entry \'(.+?)\' is no longer a directory/
    84:             raise Capistrano::Error, "subversion can't update because directory '#{$1}' was replaced. Please add it to svn:ignore."
    85:           when /accept \(t\)emporarily/
    86:             # subversion is asking whether to accept the certificate
    87:             "t\n"
    88:           end
    89:         end

head()

Subversion understands ‘HEAD’ to refer to the latest revision in the repository.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 17
    17:         def head
    18:           "HEAD"
    19:         end

head()

Subversion understands ‘HEAD’ to refer to the latest revision in the repository.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 17
    17:         def head
    18:           "HEAD"
    19:         end

log(from, to=nil)

Returns an "svn log" command for the two revisions.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 45
    45:         def log(from, to=nil)
    46:           scm :log, repository, authentication, "-r#{from}:#{to || head}"
    47:         end

log(from, to=nil)

Returns an "svn log" command for the two revisions.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 45
    45:         def log(from, to=nil)
    46:           scm :log, repository, authentication, "-r#{from}:#{to || head}"
    47:         end

next_revision(revision)

Increments the given revision number and returns it.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 63
    63:         def next_revision(revision)
    64:           revision.to_i + 1
    65:         end

next_revision(revision)

Increments the given revision number and returns it.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 63
    63:         def next_revision(revision)
    64:           revision.to_i + 1
    65:         end

query_revision(revision) {|command| ...}

Attempts to translate the given revision identifier to a "real" revision. If the identifier is an integer, it will simply be returned. Otherwise, this will yield a string of the commands it needs to be executed (svn info), and will extract the revision from the response.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 53
    53:         def query_revision(revision)
    54:           return revision if revision =~ /^\d+$/
    55:           command = scm(:info, repository, authentication, "-r#{revision}")
    56:           result = yield(command)
    57:           yaml = YAML.load(result)
    58:           raise "tried to run `#{command}' and got unexpected result #{result.inspect}" unless Hash === yaml
    59:           [ (yaml['Last Changed Rev'] || 0).to_i, (yaml['Revision'] || 0).to_i ].max
    60:         end

query_revision(revision) {|command| ...}

Attempts to translate the given revision identifier to a "real" revision. If the identifier is an integer, it will simply be returned. Otherwise, this will yield a string of the commands it needs to be executed (svn info), and will extract the revision from the response.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 53
    53:         def query_revision(revision)
    54:           return revision if revision =~ /^\d+$/
    55:           command = scm(:info, repository, authentication, "-r#{revision}")
    56:           result = yield(command)
    57:           yaml = YAML.load(result)
    58:           raise "tried to run `#{command}' and got unexpected result #{result.inspect}" unless Hash === yaml
    59:           [ (yaml['Last Changed Rev'] || 0).to_i, (yaml['Revision'] || 0).to_i ].max
    60:         end

sync(revision, destination)

Returns the command that will do an "svn update" to the given revision, for the working copy at the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 29
    29:         def sync(revision, destination)
    30:           scm :update, arguments, verbose, authentication, "-r#{revision}", destination
    31:         end

sync(revision, destination)

Returns the command that will do an "svn update" to the given revision, for the working copy at the given destination.

[Source]

        # File lib/capistrano/recipes/deploy/scm/subversion.rb, line 29
    29:         def sync(revision, destination)
    30:           scm :update, arguments, verbose, authentication, "-r#{revision}", destination
    31:         end

[Validate]