diff --git a/lib/bundler/source/git.rb b/lib/bundler/source/git.rb index ab997ec47cc..5ddfef873e8 100644 --- a/lib/bundler/source/git.rb +++ b/lib/bundler/source/git.rb @@ -8,7 +8,7 @@ class Source class Git < Path autoload :GitProxy, File.expand_path("git/git_proxy", __dir__) - attr_reader :uri, :ref, :branch, :options, :submodules + attr_reader :uri, :ref, :branch, :options, :glob, :submodules def initialize(options) @options = options @@ -48,13 +48,14 @@ def to_lock end def hash - [self.class, uri, ref, branch, name, version, submodules].hash + [self.class, uri, ref, branch, name, version, glob, submodules].hash end 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 + version == other.version && glob == other.glob && + submodules == other.submodules end alias_method :==, :eql? diff --git a/spec/install/git_spec.rb b/spec/install/git_spec.rb index c16285241fa..cc8bf70b036 100644 --- a/spec/install/git_spec.rb +++ b/spec/install/git_spec.rb @@ -61,5 +61,25 @@ expect(out).to include("Bundle complete!") end + + it "allows multiple gems from the same git source" do + build_repo2 do + build_lib "foo", "1.0", :path => lib_path("gems/foo") + build_lib "zebra", "2.0", :path => lib_path("gems/zebra") + build_git "gems", :path => lib_path("gems"), :gemspec => false + end + + install_gemfile <<-G + source "#{file_uri_for(gem_repo2)}" + gem "foo", :git => "#{lib_path("gems")}", :glob => "foo/*.gemspec" + gem "zebra", :git => "#{lib_path("gems")}", :glob => "zebra/*.gemspec" + G + + bundle "info foo" + expect(out).to include("* foo (1.0 #{revision_for(lib_path("gems"))[0..6]})") + + bundle "info zebra" + expect(out).to include("* zebra (2.0 #{revision_for(lib_path("gems"))[0..6]})") + end end end