class Gem::Resolver::GitSet - Documentation for Ruby 3.3

# class Gem::Resolver::GitSet

A `GitSet` represents gems that are sourced from git repositories.

This is used for gem dependency file support.

Example:

    set = Gem::Resolver::GitSet.new
    set.add_git_gem 'rake', 'git://example/rake.git', tag: 'rake-10.1.0'

### Attributes

root_dir[RW]

The root directory for git gems in this set. This is usually `Gem.dir`, the installation directory for regular gems.

### Public Instance Methods

find_all(req) click to toggle source

Finds all git gems matching `req`

    # File lib/rubygems/resolver/git_set.rb, line 80
    def find_all(req)
      prefetch nil

      specs.values.select do |spec|
        req.match? spec
      end
    end

prefetch(reqs) click to toggle source

Prefetches specifications from the git repositories in this set.

    # File lib/rubygems/resolver/git_set.rb, line 91
    def prefetch(reqs)
      return unless @specs.empty?

      @repositories.each do |name, (repository, reference)|
        source = Gem::Source::Git.new name, repository, reference
        source.root_dir = @root_dir
        source.remote = @remote

        source.specs.each do |spec|
          git_spec = Gem::Resolver::GitSpecification.new self, spec, source

          @specs[spec.name] = git_spec
        end
      end
    end