class AvoDeploy::ScmProvider::GitScmProvider
Public Class Methods
Initializes the provider
@param env [TaskExecutionEnvironment] Environment for the commands to be executed in
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 26 def initialize(env) super(env) end
Public Instance Methods
Checks out repository code from a system and switches to the given branch
@param url [String] the repository location @param local_dir [String] path to the working copy @param branch [String] the branch to check out @param tag [String] tag to check out
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 36 def checkout_from_remote(url, local_dir, branch, tag = nil) res = @env.command("git clone --recursive #{url} #{local_dir}") raise RuntimeError, "Could not clone from git url #{url}" unless res.retval == 0 branch = tag if tag.nil? == false @env.chdir(local_dir) res = @env.command("git checkout #{branch}") @env.chdir('../') raise RuntimeError, "could not switch to branch #{branch}" unless res.retval == 0 end
Returns the scm tools that have to be installed on specific systems
@return [Array] array of utilities
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 88 def cli_utils ['git', 'awk', 'grep'] end
Finds files that differ between two revisions and returns them as an array
@param rev1 [String] sha1 @param rev2 [String] sha1
@return [Array]
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 64 def diff_files_between_revisions(rev1, rev2) res = @env.command("git diff --name-only #{rev1} #{rev2}") res.stdout.lines end
Returns the current revision of the working copy
@return [String] the current revision of the working copy
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 52 def revision res = @env.command('git rev-parse HEAD') res.stdout.gsub("\n", '') end
Returns scm files to be executed in the deployment process
@return [Array] array of scm control files
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 81 def scm_files ['.git', '.gitignore'] end
Finds files unknown file in the working directory and returns them as a array
@return [Array]
# File lib/avodeploy/scm_provider/git_scm_provider.rb, line 73 def unknown_files_in_workdir res = @env.command("git status -s | grep '^??' | awk '/^?? (.*)$/ {print $2}'") res.stdout.lines end