Class: Bundler::Source::Git::GitProxy
- Inherits:
-
Object
- Object
- Bundler::Source::Git::GitProxy
- Defined in:
- lib/bundler/source/git/git_proxy.rb
Overview
The GitProxy is responsible to interact with git repositories. All actions required by the Git source is encapsulated in this object.
Instance Attribute Summary collapse
-
#path ⇒ Object
Returns the value of attribute path.
-
#ref ⇒ Object
Returns the value of attribute ref.
- #revision ⇒ Object
-
#uri ⇒ Object
Returns the value of attribute uri.
Instance Method Summary collapse
- #branch ⇒ Object
- #checkout ⇒ Object
- #contains?(commit) ⇒ Boolean
- #copy_to(destination, submodules = false) ⇒ Object
-
#initialize(path, uri, ref, revision = nil, git = nil) ⇒ GitProxy
constructor
A new instance of GitProxy.
- #version ⇒ Object
Constructor Details
#initialize(path, uri, ref, revision = nil, git = nil) ⇒ GitProxy
Returns a new instance of GitProxy.
37 38 39 40 41 42 43 44 |
# 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 |
Instance Attribute Details
#path ⇒ Object
Returns the value of attribute path.
34 35 36 |
# File 'lib/bundler/source/git/git_proxy.rb', line 34 def path @path end |
#ref ⇒ Object
Returns the value of attribute ref.
34 35 36 |
# File 'lib/bundler/source/git/git_proxy.rb', line 34 def ref @ref end |
#revision ⇒ Object
46 47 48 |
# File 'lib/bundler/source/git/git_proxy.rb', line 46 def revision @revision ||= allowed_in_path { git("rev-parse #{ref}").strip } end |
#uri ⇒ Object
Returns the value of attribute uri.
34 35 36 |
# File 'lib/bundler/source/git/git_proxy.rb', line 34 def uri @uri end |
Instance Method Details
#branch ⇒ Object
50 51 52 53 54 |
# File 'lib/bundler/source/git/git_proxy.rb', line 50 def branch @branch ||= allowed_in_path do git("branch") =~ /^\* (.*)$/ && $1.strip end end |
#checkout ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/bundler/source/git/git_proxy.rb', line 67 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 |
#contains?(commit) ⇒ Boolean
56 57 58 59 60 61 |
# 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) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/bundler/source/git/git_proxy.rb', line 81 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(((File.stat(destination).mode | 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 |
#version ⇒ Object
63 64 65 |
# File 'lib/bundler/source/git/git_proxy.rb', line 63 def version git("--version").sub("git version", "").strip end |