class R10K::Environment::SVN

This class implements an environment based on an SVN branch.

@since 1.3.0

Attributes

password[R]

@!attribute [r] password

@return [String, nil] The SVN password to be passed to the underlying SVN commands
@api private
remote[R]

@!attribute [r] remote

@return [String] The URL to the remote SVN branch to check out
username[R]

@!attribute [r] username

@return [String, nil] The SVN username to be passed to the underlying SVN commands
@api private
working_dir[R]

@!attribute [r] #working_dir

@api private
@return [R10K::SVN::WorkingDir] The SVN working directory backing this environment

Public Class Methods

new(name, basedir, dirname, options = {}) click to toggle source

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

Calls superclass method R10K::Environment::Base.new
# 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

signature() click to toggle source

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
status() click to toggle source
# 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
sync() click to toggle source

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