Class: R10K::Source::SVN
- Includes:
- Logging, Util::Setopts
- Defined in:
- lib/r10k/source/svn.rb
Overview
This class implements a source for SVN environments.
An SVN source generates environments by enumerating the branches and trunk for a given SVN remote. SVN repositories must conform to the conventional SVN repository structure with the directories trunk/, branches/, and optionally tags/ in the root of the repository. The trunk/ directory is specifically mapped to the production environment, branches are created as environments with the name of the given branch.
Constant Summary
Constants included from Logging
Instance Attribute Summary collapse
- #ignore_branch_prefixes ⇒ Object readonly
- #password ⇒ Object readonly
- #remote ⇒ Object readonly
- #svn_remote ⇒ Object readonly
- #username ⇒ Object readonly
Attributes inherited from Base
#basedir, #name, #prefix, #puppetfile_name
Instance Method Summary collapse
-
#desired_contents ⇒ Array<String>
List all environments that should exist in the basedir for this source.
-
#environments ⇒ Array<R10K::Environment::SVN>
Enumerate the environments associated with this SVN source.
- #filter_branches(branches, ignore_prefixes) ⇒ Object
-
#generate_environments ⇒ Array<R10K::Environment::SVN>
Generate a list of currently available SVN environments.
-
#initialize(name, basedir, options = {}) ⇒ SVN
constructor
Initialize the given source.
Methods included from Logging
debug_formatter, default_formatter, default_outputter, #logger, #logger_name, parse_level
Methods inherited from Base
Constructor Details
#initialize(name, basedir, options = {}) ⇒ SVN
Initialize the given source.
59 60 61 62 63 64 65 66 |
# File 'lib/r10k/source/svn.rb', line 59 def initialize(name, basedir, = {}) super setopts(, {:remote => :self, :username => :self, :password => :self, :puppetfile_name => :self }) @environments = [] @svn_remote = R10K::SVN::Remote.new(@remote, :username => @username, :password => @password) @ignore_branch_prefixes = [:ignore_branch_prefixes] end |
Instance Attribute Details
#ignore_branch_prefixes ⇒ Object (readonly)
43 44 45 |
# File 'lib/r10k/source/svn.rb', line 43 def ignore_branch_prefixes @ignore_branch_prefixes end |
#password ⇒ Object (readonly)
38 39 40 |
# File 'lib/r10k/source/svn.rb', line 38 def password @password end |
#remote ⇒ Object (readonly)
23 24 25 |
# File 'lib/r10k/source/svn.rb', line 23 def remote @remote end |
#svn_remote ⇒ Object (readonly)
28 29 30 |
# File 'lib/r10k/source/svn.rb', line 28 def svn_remote @svn_remote end |
#username ⇒ Object (readonly)
33 34 35 |
# File 'lib/r10k/source/svn.rb', line 33 def username @username end |
Instance Method Details
#desired_contents ⇒ Array<String>
This is required by Util::Basedir
List all environments that should exist in the basedir for this source
102 103 104 |
# File 'lib/r10k/source/svn.rb', line 102 def desired_contents @environments.map {|env| env.dirname } end |
#environments ⇒ Array<R10K::Environment::SVN>
Enumerate the environments associated with this SVN source.
72 73 74 75 76 77 78 |
# File 'lib/r10k/source/svn.rb', line 72 def environments if @environments.empty? @environments = generate_environments() end @environments end |
#filter_branches(branches, ignore_prefixes) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/r10k/source/svn.rb', line 108 def filter_branches(branches, ignore_prefixes) filter = Regexp.new("^(#{ignore_prefixes.join('|')})") branches = branches.reject do |branch| result = filter.match(branch) if result logger.warn _("Branch %{branch} filtered out by ignore_branch_prefixes %{ibp}") % {branch: branch, ibp: @ignore_branch_prefixes} end result end branches end |
#generate_environments ⇒ Array<R10K::Environment::SVN>
respect environment name corrections
Generate a list of currently available SVN environments
87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/r10k/source/svn.rb', line 87 def generate_environments names_and_paths.map do |(branch, path)| = { :remote => path, :username => @username, :password => @password, :puppetfile_name => puppetfile_name } R10K::Environment::SVN.new(branch.name, @basedir, branch.dirname, ) end end |