Take into account :latest status in git provider
authorAleksey Lim <alsroot@member.fsf.org>
Fri, 20 Aug 2010 06:16:51 +0000 (14:16 +0800)
committerJames Turnbull <james@lovedthanlost.net>
Fri, 20 Aug 2010 06:25:11 +0000 (14:25 +0800)
lib/puppet/type/vcsrepo.rb

index ff3624b..8b2d93e 100644 (file)
@@ -28,13 +28,13 @@ Puppet::Type.newtype(:vcsrepo) do
         when :present
           return true unless [:absent, :purged, :held].include?(is)
         when :latest
-          if provider.latest?
+          if is == :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
     end     
               
@@ -70,16 +70,12 @@ Puppet::Type.newtype(:vcsrepo) do
     def retrieve
       prov = @resource.provider
       if prov
-        if prov.class.feature?(:bare_repositories)
-          if prov.working_copy_exists?
-            :present
-          elsif prov.bare_exists?
-            :bare
-          else
-            :absent
-          end
+        if prov.working_copy_exists?
+          prov.latest? ? :latest : :present
+        elsif prov.class.feature?(:bare_repositories) and prov.bare_exists?
+          :bare
         else
-          prov.exists? ? :present : :absent
+          :absent
         end
       else
         raise Puppet::Error, "Could not find provider"
@@ -121,4 +117,4 @@ Puppet::Type.newtype(:vcsrepo) do
     end
   end
 
-end
\ No newline at end of file
+end