When ensure => latest, svn didn't update.
svn provider now gets the latest revision from the repo, rather than the checkout Test with revision => <some value> as well now when ensure => latest, only refresh dependent resources if the repo is actually updated Tidied up debug messages
This commit is contained in:
parent
6112583f15
commit
dd31bce565
|
@ -27,6 +27,22 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo)
|
||||||
FileUtils.rm_rf(@resource.value(:path))
|
FileUtils.rm_rf(@resource.value(:path))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def latest?
|
||||||
|
at_path do
|
||||||
|
if self.revision < self.latest then
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def latest
|
||||||
|
at_path do
|
||||||
|
svn('info', '-r', 'HEAD')[/^Revision:\s+(\d+)/m, 1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def revision
|
def revision
|
||||||
at_path do
|
at_path do
|
||||||
svn('info')[/^Revision:\s+(\d+)/m, 1]
|
svn('info')[/^Revision:\s+(\d+)/m, 1]
|
||||||
|
|
|
@ -19,6 +19,24 @@ Puppet::Type.newtype(:vcsrepo) do
|
||||||
over time (eg, some VCS tags and branch names)"
|
over time (eg, some VCS tags and branch names)"
|
||||||
|
|
||||||
ensurable do
|
ensurable do
|
||||||
|
attr_accessor :latest
|
||||||
|
|
||||||
|
def insync?(is)
|
||||||
|
@should ||= []
|
||||||
|
|
||||||
|
case should
|
||||||
|
when :present
|
||||||
|
return true unless [:absent, :purged, :held].include?(is)
|
||||||
|
when :latest
|
||||||
|
if provider.latest?
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
self.debug "%s repo revision is %s, latest is %s" %
|
||||||
|
[@resource.name, provider.revision, provider.latest]
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
newvalue :present do
|
newvalue :present do
|
||||||
provider.create
|
provider.create
|
||||||
|
@ -37,7 +55,11 @@ Puppet::Type.newtype(:vcsrepo) do
|
||||||
if provider.respond_to?(:update_references)
|
if provider.respond_to?(:update_references)
|
||||||
provider.update_references
|
provider.update_references
|
||||||
end
|
end
|
||||||
|
if provider.respond_to?(:latest?)
|
||||||
|
reference = provider.latest || provider.revision
|
||||||
|
else
|
||||||
reference = resource.value(:revision) || provider.revision
|
reference = resource.value(:revision) || provider.revision
|
||||||
|
end
|
||||||
notice "Updating to latest '#{reference}' revision"
|
notice "Updating to latest '#{reference}' revision"
|
||||||
provider.revision = reference
|
provider.revision = reference
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue