class Git::URL
Any URL that can be passed to `git clone` can be parsed by this class.
@see git-scm.com/docs/git-clone#_git_urls GIT URLs @see github.com/sporkmonger/addressable Addresable::URI
@api public
Constants
Public Class Methods
clone_to(url, bare: false, mirror: false)
click to toggle source
The directory `git clone` would use for the repository directory for the given URL
@example
Git::URL.clone_to('https://github.com/ruby-git/ruby-git.git') #=> 'ruby-git'
@param url [String] the Git URL containing the repository directory
@return [String] the name of the repository directory
# File lib/git/url.rb, line 63 def self.clone_to(url, bare: false, mirror: false) uri = parse(url) path_parts = uri.path.split('/') path_parts.pop if path_parts.last == '.git' directory = path_parts.last if bare || mirror directory += '.git' unless directory.end_with?('.git') elsif directory.end_with?('.git') directory = directory[0..-5] end directory end
parse(url)
click to toggle source
Parse a Git URL and return an Addressable::URI object
The URI returned can be converted back to a string with 'to_s'. This is guaranteed to return the same URL string that was parsed.
@example
uri = Git::URL.parse('https://github.com/ruby-git/ruby-git.git') #=> #<Addressable::URI:0x44c URI:https://github.com/ruby-git/ruby-git.git> uri.scheme #=> "https" uri.host #=> "github.com" uri.path #=> "/ruby-git/ruby-git.git" Git::URL.parse('/Users/James/projects/ruby-git') #=> #<Addressable::URI:0x438 URI:/Users/James/projects/ruby-git>
@param url [String] the Git URL to parse
@return [Addressable::URI] the parsed URI
# File lib/git/url.rb, line 46 def self.parse(url) if !url.start_with?('file:') && (m = GIT_ALTERNATIVE_SSH_SYNTAX.match(url)) GitAltURI.new(user: m[:user], host: m[:host], path: m[:path]) else Addressable::URI.parse(url) end end