class Gem::Source::Git

A git gem for use in a gem dependencies file.

Example:

source =
  Gem::Source::Git.new 'rake', 'git@example:rake.git', 'rake-10.1.0', false

source.specs

Attributes

The name of the gem created by this git gem.

Does this repository need submodules checked out too?

The commit reference used for checking out this git gem.

When false the cache for this repository will not be updated.

The git repository this gem is sourced from.

The directory for cache and git gem installation

Public Class Methods

Creates a new git gem source for a gems from loaded from repository at the given reference. The name is only used to track the repository back to a gem dependencies file, it has no real significance as a git repository may contain multiple gems. If submodules is true, submodules will be checked out when the gem is installed.

# File lib/rubygems/source/git.rb, line 51
def initialize(name, repository, reference, submodules = false)
  require_relative "../uri"
  @uri = Gem::Uri.parse(repository)
  @name            = name
  @repository      = repository
  @reference       = reference || "HEAD"
  @need_submodules = submodules

  @remote   = true
  @root_dir = Gem.dir
  @git      = ENV["git"] || "git"
end

Public Instance Methods

# File lib/rubygems/source/git.rb, line 64
def <=>(other)
  case other
  when Gem::Source::Git then
    0
  when Gem::Source::Vendor,
       Gem::Source::Lock then
    -1
  when Gem::Source then
    1
  end
end

Loads all gemspecs in the repository

# File lib/rubygems/source/git.rb, line 198
def specs
  checkout

  return [] unless install_dir

  Dir.chdir install_dir do
    Dir["{,*,*/*}.gemspec"].map do |spec_file|
      directory = File.dirname spec_file
      file      = File.basename spec_file

      Dir.chdir directory do
        spec = Gem::Specification.load file
        if spec
          spec.base_dir = base_dir

          spec.extension_dir =
            File.join base_dir, "extensions", Gem::Platform.local.to_s,
              Gem.extension_api_version, "#{name}-#{dir_shortref}"

          spec.full_gem_path = File.dirname spec.loaded_from if spec
        end
        spec
      end
    end.compact
  end
end