From dd31bce5655d7417cb4685ec6740898929a0b10c Mon Sep 17 00:00:00 2001 From: mikeknox Date: Wed, 7 Jul 2010 21:10:56 +1000 Subject: When ensure => latest, svn didn't update. svn provider now gets the latest revision from the repo, rather than the checkout Test with revision => as well now when ensure => latest, only refresh dependent resources if the repo is actually updated Tidied up debug messages --- lib/puppet/type/vcsrepo.rb | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'lib/puppet/type/vcsrepo.rb') diff --git a/lib/puppet/type/vcsrepo.rb b/lib/puppet/type/vcsrepo.rb index 137f8cd..ff3624b 100644 --- a/lib/puppet/type/vcsrepo.rb +++ b/lib/puppet/type/vcsrepo.rb @@ -19,7 +19,25 @@ Puppet::Type.newtype(:vcsrepo) do over time (eg, some VCS tags and branch names)" 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 provider.create end @@ -37,7 +55,11 @@ Puppet::Type.newtype(:vcsrepo) do if provider.respond_to?(:update_references) provider.update_references end - reference = resource.value(:revision) || provider.revision + if provider.respond_to?(:latest?) + reference = provider.latest || provider.revision + else + reference = resource.value(:revision) || provider.revision + end notice "Updating to latest '#{reference}' revision" provider.revision = reference else @@ -99,4 +121,4 @@ Puppet::Type.newtype(:vcsrepo) do end end -end +end \ No newline at end of file -- cgit v1.2.3