89 lines
2.5 KiB
Puppet
89 lines
2.5 KiB
Puppet
# Install svn client tools.
|
|
#
|
|
class svn::client {
|
|
|
|
package { "subversion":
|
|
ensure => installed,
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Checkout working copy.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $name:
|
|
# Destination directory.
|
|
# $source:
|
|
# Source URL.
|
|
# $revision:
|
|
# Revision. Defaults to HEAD.
|
|
#
|
|
# === Sample usage
|
|
#
|
|
# svn::checkout { "/usr/local/src/graphingwiki":
|
|
# source => "http://svn.graphingwiki.webfactional.com/trunk",
|
|
# revision => "1959",
|
|
# }
|
|
#
|
|
define svn::checkout($source, $revision="HEAD") {
|
|
|
|
exec { "svn-co-${name}":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
command => "svn checkout --non-interactive -r ${revision} ${source} ${name}",
|
|
unless => "test -d ${name}",
|
|
require => Package["subversion"],
|
|
}
|
|
|
|
exec { "svn-up-${name}":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
cwd => "${name}",
|
|
command => "svn update --non-interactive -r ${revision}",
|
|
onlyif => $revision ? {
|
|
"HEAD" => "svn status --non-interactive -q -u 2>&1 | egrep '^[[:space:]]+\\*'",
|
|
default => "test $(svn info --non-interactive 2>&1 | awk '/^Revision:/ { print \$2 }') != ${revision}",
|
|
},
|
|
require => Exec["svn-co-${name}"],
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Export directory from repository.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $name:
|
|
# Destination directory.
|
|
# $source:
|
|
# Source URL.
|
|
# $revision:
|
|
# Revision. Defaults to HEAD.
|
|
#
|
|
# === Sample usage
|
|
#
|
|
# svn::export { "/usr/local/src/graphingwiki":
|
|
# source => "http://svn.graphingwiki.webfactional.com/trunk/graphingwiki",
|
|
# revision => "1959",
|
|
# }
|
|
#
|
|
define svn::export($source, $revision="HEAD") {
|
|
|
|
exec { "svn-export-clean-${name}":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
command => "rm -fr ${name}",
|
|
onlyif => $revision ? {
|
|
"HEAD" => "test -r ${name}/.svnrevision && test $(svn info --non-interactive ${source} 2>&1 | awk '/^Last Changed Rev:/ { print \$4 }') != $(cat ${name}/.svnrevision)",
|
|
default => "test -r ${name}/.svnrevision && test ${revision} != $(cat ${name}/.svnrevision)",
|
|
},
|
|
}
|
|
|
|
exec { "svn-export-${name}":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
command => "svn export --non-interactive -r ${revision} ${source} ${name} && svn info --non-interactive -r ${revision} ${source} 2>&1 | awk '/^Last Changed Rev:/ { print \$4 }' > ${name}/.svnrevision",
|
|
creates => "${name}",
|
|
require => Exec["svn-export-clean-${name}"],
|
|
}
|
|
|
|
}
|