lib/bundler/source/git.rb in bundler-1.10.6 vs lib/bundler/source/git.rb in bundler-1.11.0.pre.1
- old
+ new
@@ -1,14 +1,13 @@
-require 'fileutils'
-require 'uri'
-require 'digest/sha1'
+require "fileutils"
+require "uri"
+require "digest/sha1"
module Bundler
class Source
-
class Git < Path
- autoload :GitProxy, 'bundler/source/git/git_proxy'
+ autoload :GitProxy, "bundler/source/git/git_proxy"
attr_reader :uri, :ref, :branch, :options, :submodules
def initialize(options)
@options = options
@@ -16,15 +15,15 @@
@allow_cached = false
@allow_remote = false
# Stringify options that could be set as symbols
- %w(ref branch tag revision).each{|k| options[k] = options[k].to_s if options[k] }
+ %w(ref branch tag revision).each {|k| options[k] = options[k].to_s if options[k] }
- @uri = options["uri"] || ''
+ @uri = options["uri"] || ""
@branch = options["branch"]
- @ref = options["ref"] || options["branch"] || options["tag"] || 'master'
+ @ref = options["ref"] || options["branch"] || options["tag"] || "master"
@submodules = options["submodules"]
@name = options["name"]
@version = options["version"]
@copied = false
@@ -48,35 +47,38 @@
def hash
[self.class, uri, ref, branch, name, version, submodules].hash
end
- def eql?(o)
- o.is_a?(Git) &&
- uri == o.uri &&
- ref == o.ref &&
- branch == o.branch &&
- name == o.name &&
- version == o.version &&
- submodules == o.submodules
+ def eql?(other)
+ other.is_a?(Git) && uri == other.uri && ref == other.ref &&
+ branch == other.branch && name == other.name &&
+ version == other.version && submodules == other.submodules
end
- alias == eql?
+ alias_method :==, :eql?
def to_s
at = if local?
path
elsif options["ref"]
shortref_for_display(options["ref"])
else
ref
end
- "#{uri} (at #{at})"
+
+ rev = begin
+ "@#{shortref_for_display(revision)}"
+ rescue GitError
+ nil
+ end
+
+ "#{uri} (at #{at}#{rev})"
end
def name
- File.basename(@uri, '.git')
+ File.basename(@uri, ".git")
end
# This is the path which is going to contain a specific
# checkout of the git repository. When using local git
# repos, this is set to the local repo.
@@ -91,11 +93,11 @@
path
end
end
end
- alias :path :install_path
+ alias_method :path, :install_path
def extension_dir_name
"#{base_name}-#{shortref_for_path(revision)}"
end
@@ -143,13 +145,11 @@
changed
end
# TODO: actually cache git specs
def specs(*)
- if has_app_cache? && !local?
- set_local!(app_cache_path)
- end
+ set_local!(app_cache_path) if has_app_cache? && !local?
if requires_checkout? && !@copied
git_proxy.checkout
git_proxy.copy_to(install_path, submodules)
serialize_gemspecs_in(install_path)
@@ -158,11 +158,11 @@
local_specs
end
def install(spec, force = false)
- Bundler.ui.info "Using #{version_message(spec)} from #{to_s}"
+ Bundler.ui.info "Using #{version_message(spec)} from #{self}"
if requires_checkout? && !@copied && !force
Bundler.ui.debug " * Checking out revision: #{ref}"
git_proxy.copy_to(install_path, submodules)
serialize_gemspecs_in(install_path)
@@ -186,11 +186,11 @@
def load_spec_files
super
rescue PathError => e
Bundler.ui.trace e
- raise GitError, "#{to_s} is not yet checked out. Run `bundle install` first."
+ raise GitError, "#{self} is not yet checked out. Run `bundle install` first."
end
# This is the path which is going to contain a cache
# of the git repository. When using the same git repository
# across different projects, this cache will be shared.
@@ -217,21 +217,21 @@
def allow_git_ops?
@allow_remote || @allow_cached
end
- private
+ private
def serialize_gemspecs_in(destination)
expanded_path = destination.expand_path(Bundler.root)
Dir["#{expanded_path}/#{@glob}"].each do |spec_path|
# Evaluate gemspecs and cache the result. Gemspecs
# in git might require git or other dependencies.
# The gemspecs we cache should already be evaluated.
spec = Bundler.load_gemspec(spec_path)
next unless spec
- File.open(spec_path, 'wb') {|file| file.write(spec.to_ruby) }
+ File.open(spec_path, "wb") {|file| file.write(spec.to_ruby) }
end
end
def set_local!(path)
@local = true
@@ -250,11 +250,11 @@
def requires_checkout?
allow_git_ops? && !local?
end
def base_name
- File.basename(uri.sub(%r{^(\w+://)?([^/:]+:)?(//\w*/)?(\w*/)*},''),".git")
+ File.basename(uri.sub(%r{^(\w+://)?([^/:]+:)?(//\w*/)?(\w*/)*}, ""), ".git")
end
def shortref_for_display(ref)
ref[0..6]
end
@@ -265,11 +265,11 @@
def uri_hash
if uri =~ %r{^\w+://(\w+@)?}
# Downcase the domain component of the URI
# and strip off a trailing slash, if one is present
- input = URI.parse(uri).normalize.to_s.sub(%r{/$},'')
+ input = URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
else
# If there is no URI scheme, assume it is an ssh/git URI
input = uri
end
Digest::SHA1.hexdigest(input)
@@ -284,10 +284,8 @@
end
def git_proxy
@git_proxy ||= GitProxy.new(cache_path, uri, ref, cached_revision, self)
end
-
end
-
end
end