Class: Vlad::MercurialQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/vlad/mercurial_queue.rb

Instance Method Summary collapse

Instance Method Details

#checkout(revision, destination) ⇒ Object

Returns the command that will check out revision from the repository into directory destination. revision can be any changeset ID or equivalent (e.g. branch, tag, etc…)



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/vlad/mercurial_queue.rb', line 18

def checkout(revision, destination)
  commands = []
  commands <<
    "if [ ! -d .hg ]; then #{hg_cmd} clone -r null #{repository} .; fi"
  commands << "if [ ! -d .hg/patches/.hg ]; then " +
    "#{hg_cmd} clone -r null #{queue_repo} .hg/patches; fi"
  commands << "#{hg_cmd} --config extensions.mq= qpop -a"
  commands << "#{hg_cmd} pull #{repository}"
  commands << "#{hg_cmd} pull -R .hg/patches #{queue_repo}"
  commands << "#{hg_cmd} update #{revision}"
  commands << "#{hg_cmd} update -R .hg/patches #{queue_revision}"
  commands << "#{hg_cmd} --config extensions.mq= qpush -a"
  commands.join(' && ')
end

#export(revision, destination) ⇒ Object

Returns the command that will export revision from the repository into the directory destination. Expects to be run from scm_path after Vlad::Mercurial#checkout



38
39
40
41
42
43
44
45
# File 'lib/vlad/mercurial_queue.rb', line 38

def export(revision, destination)
  case deploy_via.to_sym
  when :checkout, :clone
    "#{hg_cmd} --config extensions.mq= clone #{scm_path} -r qtip #{destination}"
  else # :archive, :export (or whatever)
    "#{hg_cmd} --config extensions.mq= archive#{' -S' if hg_subrepos} -r qtip #{destination}"
  end
end

#revision(revision) ⇒ Object

Returns a command that maps human-friendly revision identifier revision into a mercurial changeset ID.



51
52
53
# File 'lib/vlad/mercurial_queue.rb', line 51

def revision(revision)
  "`#{hg_cmd} identify -r #{revision} | cut -f1 -d\\ `"
end