summaryrefslogtreecommitdiff
path: root/lib/rubygems/resolver/git_set.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/resolver/git_set.rb')
-rw-r--r--lib/rubygems/resolver/git_set.rb33
1 files changed, 11 insertions, 22 deletions
diff --git a/lib/rubygems/resolver/git_set.rb b/lib/rubygems/resolver/git_set.rb
index 3c38d3dca0..c912e367d9 100644
--- a/lib/rubygems/resolver/git_set.rb
+++ b/lib/rubygems/resolver/git_set.rb
@@ -42,38 +42,27 @@ class Gem::Resolver::GitSet < Gem::Resolver::Set
# Finds all git gems matching +req+
def find_all req
- @repositories.keys.select do |name|
- name == req.name
- end.map do |name|
- @specs[name] || load_spec(name)
- end.select do |spec|
+ prefetch nil
+
+ specs.values.select do |spec|
req.matches_spec? spec
end
end
- def load_spec name
- repository, reference = @repositories[name]
-
- source = Gem::Source::Git.new name, repository, reference
-
- spec = source.load_spec name
-
- git_spec =
- Gem::Resolver::GitSpecification.new self, spec, source
-
- @specs[name] = git_spec
- end
-
##
# Prefetches specifications from the git repositories in this set.
def prefetch reqs
- names = reqs.map { |req| req.name }
+ return unless @specs.empty?
+
+ @repositories.each do |name, (repository, reference)|
+ source = Gem::Source::Git.new name, repository, reference
- @repositories.each_key do |name|
- next unless names.include? name
+ source.specs.each do |spec|
+ git_spec = Gem::Resolver::GitSpecification.new self, spec, source
- load_spec name
+ @specs[spec.name] = git_spec
+ end
end
end