1 require File.join(File.dirname(__FILE__), '..', 'vcsrepo')
3 Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) do
4 desc "Supports Subversion repositories"
6 commands :svn => 'svn',
7 :svnadmin => 'svnadmin'
9 defaultfor :svn => :exists
12 if !@resource.value(:source)
13 create_repository(@resource.value(:path))
15 checkout_repository(@resource.value(:source),
16 @resource.value(:path),
17 @resource.value(:revision))
22 File.directory?(@resource.value(:path))
26 FileUtils.rm_rf(@resource.value(:path))
31 svn('info')[/^Revision:\s+(\d+)/m, 1]
35 def revision=(desired)
37 svn('update', '-r', desired)
43 def checkout_repository(source, path, revision = nil)
46 args.push('-r', revision)
48 args.push(source, path)
52 def create_repository(path)
54 if @resource.value(:fstype)
55 args.push('--fs-type', @resource.value(:fstype))