Class: Capistrano::Deploy::SCM::Bzr

Inherits:
Base
  • Object
show all
Defined in:
lib/capistrano/recipes/deploy/scm/bzr.rb

Overview

Implements the Capistrano SCM interface for the Bazaar-NG revision control system (bazaar-vcs.org/).

Instance Attribute Summary

Attributes inherited from Base

#configuration

Instance Method Summary collapse

Methods inherited from Base

#command, default_command, #handle_data, #initialize, #local, #local?, #scm

Constructor Details

This class inherits a constructor from Capistrano::Deploy::SCM::Base

Instance Method Details

#checkout(revision, destination) ⇒ Object

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


23
24
25
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 23

def checkout(revision, destination)
  scm :checkout, "--lightweight", revswitch(revision), repository, destination
end

#diff(from, to = nil) ⇒ Object

The bzr “diff” command doesn't accept a repository argument, so it must be run from within a working tree.


43
44
45
46
47
48
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 43

def diff(from, to=nil)
  switch = "-r#{from}"
  switch << "..#{to}" if to

  scm :diff, switch
end

#export(revision, destination) ⇒ Object

The bzr 'export' does an export similar to other SCM systems


37
38
39
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 37

def export(revision, destination)
  scm :export, revswitch(revision), destination, repository
end

#headObject

Bazaar-NG doesn't support any pseudo-id's, so we'll use the convention in this adapter that the :head symbol means the most recently committed revision.


17
18
19
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 17

def head
  :head
end

#log(from, to = nil) ⇒ Object

Returns a log of changes between the two revisions (inclusive).


51
52
53
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 51

def log(from, to=nil)
  scm :log, "--short", "-r#{from}..#{to}", repository
end

#next_revision(revision) ⇒ Object

Increments the given revision number and returns it.


69
70
71
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 69

def next_revision(revision)
  revision.to_i + 1
end

#query_revision(revision) ⇒ Object

Attempts to translate the given revision identifier to a “real” revision. If the identifier is :head, the “bzr revno” command will be yielded, and the block must execute the command and return the output. The revision will be extracted from the output and returned. If the 'revision' argument, on the other hand, is not :head, it is simply returned.


61
62
63
64
65
66
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 61

def query_revision(revision)
  return revision unless :head == revision

  command = scm('revno', repository)
  result = yield(command)
end

#sync(revision, destination) ⇒ Object

The bzr 'update' command does not support updating to a specific revision, so this just does update, followed by revert (unless updating to head).


30
31
32
33
34
# File 'lib/capistrano/recipes/deploy/scm/bzr.rb', line 30

def sync(revision, destination)
  commands = [scm(:update, destination)]
  commands << [scm(:revert, revswitch(revision), destination)] if revision != head
  commands.join(" && ")
end