Class Index [+]

Quicksearch

Capistrano::Deploy::SCM::Darcs

Implements the Capistrano SCM interface for the darcs revision control system (www.abridgegame.org/darcs/).

Public Instance Methods

checkout(revision, destination) click to toggle source

Returns the command that will check out the given revision to the given destination. The ‘revision’ parameter must be the ‘hash’ value for the revision in question, as given by ‘darcs changes —xml-output’.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 32
32:         def checkout(revision, destination)
33:           scm :get, *[verbose, 
34:                       "--repo-name=#{destination}", 
35:                       to_match(revision),
36:                       repository].compact
37:         end
diff(from, to=nil) click to toggle source

Returns the command that will do a “darcs diff” for the two revisions. Each revision must be the ‘hash’ identifier of a darcs revision.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 57
57:         def diff(from, to=nil)
58:           scm :diff, "--from-match 'hash #{from}'", to && "--to-match 'hash #{to}'"
59:         end
export(revision, destination) click to toggle source

Darcs does not have a real ‘export’ option; there is ‘darcs dist’, but that presupposes a utility that can untar and ungzip the dist file. We’ll cheat and just do a get, followed by a deletion of the _darcs metadata directory.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 51
51:         def export(revision, destination)
52:           [checkout(revision, destination), "rm -rf #{destination}/_darcs"].join(" && ")
53:         end
head() click to toggle source

Because darcs does not have any support for pseudo-ids, we’ll just return something here that we can use in the helpers below for determining whether we need to look up the latest revision.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 17
17:         def head
18:           :head
19:         end
log(from, to=nil) click to toggle source

Returns the log of changes between the two revisions. Each revision must be the ‘hash’ identifier of a darcs revision.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 63
63:         def log(from, to=nil)
64:           scm :changes, "--from-match 'hash #{from}'", to && "--to-match 'hash #{to}'", "--repo=#{repository}"
65:         end
query_revision(revision) click to toggle source

Attempts to translate the given revision identifier to a “real” revision. If the identifier is a symbol, it is assumed to be a pseudo-id. Otherwise, it will be immediately returned. If it is a pseudo-id, a set of commands to execute will be yielded, and the result of executing those commands must be returned by the block. This method will then extract the actual revision hash from the returned data.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 74
74:         def query_revision(revision)
75:           case revision
76:           when :head
77:             xml = yield(scm(:changes, "--last 1", "--xml-output", "--repo=#{repository}"))
78:             return xml[/hash='(.*?)'/, 1]
79:           else return revision
80:           end
81:         end
sync(revision, destination) click to toggle source

Tries to update the destination repository in-place, to bring it up to the given revision. Note that because darcs’ “pull” operation does not support a “to-match” argument (or similar), this basically nukes the destination directory and re-gets it.

    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 43
43:         def sync(revision, destination)
44:           ["rm -rf #{destination}", checkout(revision, destination)].join(" && ")
45:         end
to_match(revision) click to toggle source
    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 21
21:         def to_match(revision)
22:           if revision.nil? || revision == self.head
23:             nil
24:           else
25:             "--to-match='hash #{revision}'"
26:           end
27:         end

Private Instance Methods

verbose() click to toggle source
    # File lib/capistrano/recipes/deploy/scm/darcs.rb, line 85
85:           def verbose
86:             case variable(:scm_verbose)
87:             when nil then "-q"
88:             when false then nil
89:             else "-v"
90:             end
91:           end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.