Merge branch 'master' of git://github.com/reductivelabs/puppet-vcsrepo

This commit is contained in:
James Turnbull
2010-09-14 09:02:02 +10:00
2 changed files with 32 additions and 22 deletions

View File

@@ -30,18 +30,19 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
FileUtils.rm_rf(@resource.value(:path))
end
def revision
if !working_copy_exists?
create
def latest?
at_path do
return self.revision == self.latest
end
end
current = at_path { git('rev-parse', 'HEAD') }
canonical = at_path { git('rev-parse', @resource.value(:revision)) }
if current == canonical
@resource.value(:revision)
else
current
end
def latest
fetch
return get_revision('origin/HEAD')
end
def revision
return get_revision('HEAD')
end
def revision=(desired)
@@ -219,4 +220,17 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
at_path { git('branch', '-a') }.gsub('*', ' ').split(/\n/).map { |line| line.strip }
end
def get_revision(rev)
if !working_copy_exists?
create
end
current = at_path { git('rev-parse', rev).strip }
if @resource.value(:revision)
canonical = at_path { git('rev-parse', @resource.value(:revision)).strip }
current = @resource.value(:revision) if current == canonical
end
return current
end
end

View 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
end