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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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]