Class: Dandelion::Deployment::DiffDeployment
Instance Method Summary
collapse
Methods inherited from Deployment
create, #local_revision, #log, #validate, #write_revision
Constructor Details
#initialize(repo, backend, options = {}) ⇒ DiffDeployment
Returns a new instance of DiffDeployment.
71
72
73
74
|
# File 'lib/dandelion/deployment.rb', line 71
def initialize(repo, backend, options = {})
super(repo, backend, options)
@diff = Git::Diff.new(@repo, read_remote_revision, @options[:revision])
end
|
Instance Method Details
#any? ⇒ Boolean
114
115
116
|
# File 'lib/dandelion/deployment.rb', line 114
def any?
@diff.changed.any? || @diff.deleted.any?
end
|
#deploy ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/dandelion/deployment.rb', line 80
def deploy
if !revisions_match? && any?
deploy_changed
deploy_deleted
else
log.info("Nothing to deploy")
end
unless revisions_match?
write_revision
end
end
|
#deploy_changed ⇒ Object
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/dandelion/deployment.rb', line 92
def deploy_changed
@diff.changed.each do |file|
if exclude_file?(file)
log.info("Skipping file: #{file}")
else
log.info("Uploading file: #{file}")
@backend.write(file, @tree.show(file))
end
end
end
|
#deploy_deleted ⇒ Object
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/dandelion/deployment.rb', line 103
def deploy_deleted
@diff.deleted.each do |file|
if exclude_file?(file)
log.info("Skipping file: #{file}")
else
log.info("Deleting file: #{file}")
@backend.delete(file)
end
end
end
|
#remote_revision ⇒ Object
76
77
78
|
# File 'lib/dandelion/deployment.rb', line 76
def remote_revision
@diff.from_revision
end
|
#revisions_match? ⇒ Boolean
118
119
120
|
# File 'lib/dandelion/deployment.rb', line 118
def revisions_match?
remote_revision == local_revision
end
|