class R10K::Environment::SVN
This class implements an environment based on an SVN branch.
@since 1.3.0
Attributes
@!attribute [r] password
@return [String, nil] The SVN password to be passed to the underlying SVN commands @api private
@!attribute [r] remote
@return [String] The URL to the remote SVN branch to check out
@!attribute [r] username
@return [String, nil] The SVN username to be passed to the underlying SVN commands @api private
@!attribute [r] #working_dir
@api private @return [R10K::SVN::WorkingDir] The SVN working directory backing this environment
Public Class Methods
Initialize the given SVN environment.
@param name [String] The unique name describing this environment. @param basedir [String] The base directory where this environment will be created. @param dirname [String] The directory name for this environment. @param options [Hash] An additional set of options for this environment.
@option options [String] :remote The URL to the remote SVN branch to check out @option options [String] :username The SVN username @option options [String] :password The SVN password
# File lib/r10k/environment/svn.rb, line 43 def initialize(name, basedir, dirname, options = {}) super setopts(options, {:remote => :self, :username => :self, :password => :self}) @working_dir = R10K::SVN::WorkingDir.new(Pathname.new(@full_path), :username => @username, :password => @password) end
Public Instance Methods
Return a sting which uniquely identifies (per source) the current state of the environment.
@api public @return [String]
# File lib/r10k/environment/svn.rb, line 72 def signature @working_dir.revision end
# File lib/r10k/environment/svn.rb, line 76 def status if !@path.exist? :absent elsif !@working_dir.is_svn? :mismatched elsif !(@remote == @working_dir.url) :mismatched elsif !@synced :outdated else :insync end end
Perform an initial checkout of the SVN repository or update the repository.
If the environment is being created for the first time, it will automatically update all modules to ensure that the environment is complete.
@api public @return [void]
# File lib/r10k/environment/svn.rb, line 58 def sync if @working_dir.is_svn? @working_dir.update else @working_dir.checkout(@remote) end @synced = true end