The GitProxy is responsible to interact with git repositories. All actions required by the Git source is encapsulated in this object.
# 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
# File lib/bundler/source/git/git_proxy.rb, line 50 def branch @branch ||= allowed_in_path do git("branch") =~ /^\* (.*)$/ && $1.strip end end
# 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 %fetch --force --quiet --tags #{uri_escaped} "refs/heads/*:refs/heads/*"| end else Bundler.ui.info "Fetching #{uri}" FileUtils.mkdir_p(path.dirname) git_retry %clone #{uri_escaped} "#{path}" --bare --no-hardlinks --quiet| end end
# 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
# 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 %clone --no-checkout --quiet "#{path}" "#{destination}"| File.chmod((0777 & ~File.umask), destination) end SharedHelpers.chdir(destination) do git_retry %fetch --force --quiet --tags "#{path}"| git "reset --hard #{@revision}" if submodules git_retry "submodule update --init --recursive" end end end
Generated with the Darkfish Rdoc Generator 2.