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