class Bundler::Source::Git::GitProxy
The GitProxy is responsible to interact with git repositories. All actions required by the Git source is encapsulated in this object.
Attributes
path[RW]
ref[RW]
revision[W]
uri[RW]
Public Class Methods
new(path, uri, ref, revision = nil, git = nil)
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 37 def initialize(path, uri, ref, revision = nil, git = nil) @path = path @uri = uri @ref = ref @revision = revision @git = git raise GitNotInstalledError.new if allow? && !Bundler.git_present? end
Public Instance Methods
branch()
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 50 def branch @branch ||= allowed_in_path do git("branch") =~ /^\* (.*)$/ && $1.strip end end
checkout()
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 63 def checkout if path.exist? return if has_revision_cached? Bundler.ui.confirm "Updating #{uri}" in_path do git_retry %Qfetch --force --quiet --tags #{uri_escaped} "refs/heads/*:refs/heads/*"| end else Bundler.ui.info "Fetching #{uri}" FileUtils.mkdir_p(path.dirname) git_retry %Qclone #{uri_escaped} "#{path}" --bare --no-hardlinks --quiet| end end
contains?(commit)
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 56 def contains?(commit) allowed_in_path do result = git_null("branch --contains #{commit}") $? == 0 && result =~ /^\* (.*)$/ end end
copy_to(destination, submodules=false)
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 77 def copy_to(destination, submodules=false) unless File.exist?(destination.join(".git")) FileUtils.mkdir_p(destination.dirname) FileUtils.rm_rf(destination) git_retry %Qclone --no-checkout --quiet "#{path}" "#{destination}"| File.chmod((0777 & ~File.umask), destination) end SharedHelpers.chdir(destination) do git_retry %Qfetch --force --quiet --tags "#{path}"| git "reset --hard #{@revision}" if submodules git_retry "submodule update --init --recursive" end end end
revision()
click to toggle source
# File lib/bundler/source/git/git_proxy.rb, line 46 def revision @revision ||= allowed_in_path { git("rev-parse #{ref}").strip } end