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
10 has_features :filesystem_types, :reference_tracking
13 if !@resource.value(:source)
14 create_repository(@resource.value(:path))
16 checkout_repository(@resource.value(:source),
17 @resource.value(:path),
18 @resource.value(:revision))
23 def working_copy_exists?
24 File.directory?(File.join(@resource.value(:path), '.svn'))
32 FileUtils.rm_rf(@resource.value(:path))
37 if self.revision < self.latest then
47 svn('info', '-r', 'HEAD')[/^Revision:\s+(\d+)/m, 1]
53 svn('info')[/^Revision:\s+(\d+)/m, 1]
57 def revision=(desired)
59 svn('update', '-r', desired)
66 def checkout_repository(source, path, revision = nil)
69 args.push('-r', revision)
71 args.push(source, path)
75 def create_repository(path)
77 if @resource.value(:fstype)
78 args.push('--fs-type', @resource.value(:fstype))
85 if @resource.value(:owner) or @resource.value(:group)