Class: RGitFlow::Tasks::Release::Finish

Inherits:
Task
  • Object
show all
Defined in:
lib/rgitflow/tasks/release/finish.rb

Constant Summary

Constants included from Printing

Printing::DEBUG_PREFIX, Printing::ERROR_PREFIX, Printing::INPUT_PREFIX, Printing::STATUS_PREFIX

Instance Attribute Summary

Attributes inherited from Task

#after, #before, #dependencies, #description, #name, #namespaces

Instance Method Summary collapse

Methods inherited from Task

#define

Methods included from Console

#invoke, #multi_task, #task?

Methods included from Printing

#debug, #error, #prompt, #status

Constructor Details

#initialize(git) ⇒ Finish

Returns a new instance of Finish.



7
8
9
10
# File 'lib/rgitflow/tasks/release/finish.rb', line 7

def initialize(git)
  super(git, 'finish', 'Finish a release branch',
        ['rgitflow', 'release'], ['install'])
end

Instance Method Details

#runObject (protected)



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rgitflow/tasks/release/finish.rb', line 14

def run
  status 'Finishing release branch...'

  branch = @git.current_branch

  unless branch.start_with? RGitFlow::Config.options[:release]
    error %Q(Cannot finish a release branch unless you are in a release
             branch)
    abort
  end

  msg = %Q(merging #{branch} into #{RGitFlow::Config.options[:master]})

  @git.branch(RGitFlow::Config.options[:master]).checkout
  @git.merge branch, msg

  invoke 'rgitflow:scm:tag'

  @git.push
  # force re-creation of develop branch
  if @git.is_remote_branch? branch
    @git.push('origin', branch, { :delete => true })
  end

  @git.branch(branch).delete

  @git.branch(RGitFlow::Config.options[:develop]).checkout

  status "Finished release branch #{branch}!"
end