Class: MultiGit::JGitBackend::Remote

Inherits:
Object
  • Object
show all
Includes:
Remote
Defined in:
lib/multi_git/jgit_backend/remote.rb

Direct Known Subclasses

Persistent

Defined Under Namespace

Classes: Persistent

Constant Summary collapse

REMOTE_SECTION =
'remote'.to_java
TEMPORARY_SECTION =
'tmp'.to_java
FETCH_URL_KEY =
'url'.to_java
PUSH_URL_KEY =
'pushurl'.to_java
FETCH =
Java::OrgEclipseJgitTransport::Transport::Operation::FETCH
PUSH =
Java::OrgEclipseJgitTransport::Transport::Operation::PUSH

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Remote

#save

Methods included from Utils::AbstractMethods

#abstract

Constructor Details

#initialize(repository, url, push_url = url) ⇒ Remote

Returns a new instance of Remote.



33
34
35
36
37
38
39
# File 'lib/multi_git/jgit_backend/remote.rb', line 33

def initialize( repository, url, push_url = url )
  @repository = repository
  conf = Java::OrgEclipseJgitLib::Config.new
  conf.setStringList(REMOTE_SECTION, TEMPORARY_SECTION, FETCH_URL_KEY, Array(url))
  conf.setStringList(REMOTE_SECTION, TEMPORARY_SECTION, PUSH_URL_KEY, Array(push_url))
  @java_config = Java::OrgEclipseJgitTransport::RemoteConfig.new(conf, TEMPORARY_SECTION)
end

Instance Attribute Details

#repositoryObject (readonly)

Returns the value of attribute repository.



8
9
10
# File 'lib/multi_git/jgit_backend/remote.rb', line 8

def repository
  @repository
end

Instance Method Details

#fetch(*refspecs) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/multi_git/jgit_backend/remote.rb', line 50

def fetch( *refspecs )
  rs = parse_fetch_refspec(*refspecs).map{|refspec| Java::OrgEclipseJgitTransport::RefSpec.new(refspec.to_s) }
  use_transport( FETCH ) do | transport |
    transport.fetch( transport_monitor, rs )
  end
  self
end

#fetch_urlsObject



41
42
43
# File 'lib/multi_git/jgit_backend/remote.rb', line 41

def fetch_urls
  java_config.getURIs.map(&:to_s)
end

#push(*refspecs) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/multi_git/jgit_backend/remote.rb', line 58

def push( *refspecs )
  rs = parse_push_refspec(*refspecs).map{|refspec| Java::OrgEclipseJgitTransport::RefSpec.new(refspec.to_s) }
  use_transport( PUSH ) do | transport |
    toPush = transport.findRemoteRefUpdatesFor( rs )
    transport.push( transport_monitor, toPush )
  end
  self
end

#push_urlsObject



45
46
47
48
# File 'lib/multi_git/jgit_backend/remote.rb', line 45

def push_urls
  pu = java_config.getPushURIs.map(&:to_s)
  pu.any? ? pu : fetch_urls
end