class Capistrano::SCM::Git

Public Instance Methods

archive_to_release_path() click to toggle source
# File lib/capistrano/scm/git.rb, line 69
def archive_to_release_path
  if (tree = fetch(:repo_tree))
    tree = tree.slice %r#^/?(.*?)/?$#, 1
    components = tree.split("/").size
    git :archive, fetch(:branch), tree, "| #{SSHKit.config.command_map[:tar]} -x --strip-components #{components} -f - -C", release_path
  else
    git :archive, fetch(:branch), "| #{SSHKit.config.command_map[:tar]} -x -f - -C", release_path
  end
end
check_repo_is_reachable() click to toggle source
# File lib/capistrano/scm/git.rb, line 41
def check_repo_is_reachable
  git :'ls-remote', git_repo_url, "HEAD"
end
clone_repo() click to toggle source
# File lib/capistrano/scm/git.rb, line 45
def clone_repo
  if (depth = fetch(:git_shallow_clone))
    git :clone, "--mirror", "--depth", depth, "--no-single-branch", git_repo_url, repo_path.to_s
  else
    git :clone, "--mirror", git_repo_url, repo_path.to_s
  end
end
define_tasks() click to toggle source
# File lib/capistrano/scm/git.rb, line 33
def define_tasks
  eval_rakefile File.expand_path("../tasks/git.rake", __FILE__)
end
fetch_revision() click to toggle source
# File lib/capistrano/scm/git.rb, line 79
def fetch_revision
  backend.capture(:git, "rev-list --max-count=1 #{fetch(:branch)}")
end
fetch_revision_time() click to toggle source
# File lib/capistrano/scm/git.rb, line 83
def fetch_revision_time
  backend.capture(:git, "--no-pager log -1 --pretty=format:\"%ct\" #{fetch(:branch)}")
end
git(*args) click to toggle source
# File lib/capistrano/scm/git.rb, line 87
def git(*args)
  args.unshift :git
  backend.execute(*args)
end
git_repo_url() click to toggle source
# File lib/capistrano/scm/git.rb, line 92
def git_repo_url
  if fetch(:git_http_username) && fetch(:git_http_password)
    URI.parse(repo_url).tap do |repo_uri|
      repo_uri.user     = fetch(:git_http_username)
      repo_uri.password = CGI.escape(fetch(:git_http_password))
    end.to_s
  elsif fetch(:git_http_username)
    URI.parse(repo_url).tap do |repo_uri|
      repo_uri.user = fetch(:git_http_username)
    end.to_s
  else
    repo_url
  end
end
register_hooks() click to toggle source
# File lib/capistrano/scm/git.rb, line 26
def register_hooks
  after "deploy:new_release_path", "git:create_release"
  before "deploy:check", "git:check"
  before "deploy:set_current_revision", "git:set_current_revision"
  before "deploy:set_current_revision_time", "git:set_current_revision_time"
end
repo_mirror_exists?() click to toggle source
# File lib/capistrano/scm/git.rb, line 37
def repo_mirror_exists?
  backend.test " [ -f #{repo_path}/HEAD ] "
end
set_defaults() click to toggle source
# File lib/capistrano/scm/git.rb, line 9
def set_defaults
  set_if_empty :git_shallow_clone, false
  set_if_empty :git_wrapper_path, lambda {
    # Use a unique name that won't collide with other deployments, and
    # that cannot be guessed by other processes that have access to /tmp.
    "#{fetch(:tmp_dir)}/git-ssh-#{SecureRandom.hex(10)}.sh"
  }
  set_if_empty :git_environmental_variables, lambda {
    {
      git_askpass: "/bin/echo",
      git_ssh: fetch(:git_wrapper_path)
    }
  }
  set_if_empty :git_max_concurrent_connections, 10
  set_if_empty :git_wait_interval, 0
end
update_mirror() click to toggle source
# File lib/capistrano/scm/git.rb, line 53
def update_mirror
  # Update the origin URL if necessary.
  git :remote, "set-url", "origin", git_repo_url

  # Note: Requires git version 1.9 or greater
  if (depth = fetch(:git_shallow_clone))
    git :fetch, "--depth", depth, "origin", fetch(:branch)
  else
    git :remote, :update, "--prune"
  end
end
verify_commit() click to toggle source
# File lib/capistrano/scm/git.rb, line 65
def verify_commit
  git :"verify-commit", fetch_revision
end