Class BaseFetchConnection
- All Implemented Interfaces:
AutoCloseable
,Connection
,FetchConnection
- Direct Known Subclasses:
BundleFetchConnection
,WalkFetchConnection
Implementors of fetch over pack-based protocols should consider using
BasePackFetchConnection
instead.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
Did the lastFetchConnection.fetch(ProgressMonitor, Collection, Set)
get tags?protected abstract void
doFetch
(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have) Implementation offetch(ProgressMonitor, Collection, Set)
without checking for multiple fetch.final void
fetch
(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have) Fetch objects we don't have but that are reachable from advertised refs.final void
fetch
(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have, OutputStream out) Fetch objects we don't have but that are reachable from advertised refs.Methods inherited from class org.eclipse.jgit.transport.BaseConnection
available, close, getMessages, getMessageWriter, getPeerUserAgent, getRef, getRefs, getRefsMap, markStartedOperation, setMessageWriter, setPeerUserAgent
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.jgit.transport.Connection
close, getMessages, getPeerUserAgent, getRef, getRefs, getRefsMap
Methods inherited from interface org.eclipse.jgit.transport.FetchConnection
didFetchTestConnectivity, getPackLocks, setPackLockMessage
-
Constructor Details
-
BaseFetchConnection
BaseFetchConnection()
-
-
Method Details
-
fetch
public final void fetch(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have) throws TransportException Fetch objects we don't have but that are reachable from advertised refs.Only one call per connection is allowed. Subsequent calls will result in
TransportException
.Implementations are free to use network connections as necessary to efficiently (for both client and server) transfer objects from the remote repository into this repository. When possible implementations should avoid replacing/overwriting/duplicating an object already available in the local destination repository. Locally available objects and packs should always be preferred over remotely available objects and packs.
Transport.isFetchThin()
should be honored if applicable.- Specified by:
fetch
in interfaceFetchConnection
- Parameters:
monitor
- progress monitor to inform the end-user about the amount of work completed, or to indicate cancellation. Implementations should poll the monitor at regular intervals to look for cancellation requests from the user.want
- one or more refs advertised by this connection that the caller wants to store locally.have
- additional objects known to exist in the destination repository, especially if they aren't yet reachable by the ref database. Connections should take this set as an addition to what is reachable through all Refs, not in replace of it.- Throws:
TransportException
- objects could not be copied due to a network failure, protocol error, or error on remote side, or connection was already used for fetch.
-
fetch
public final void fetch(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have, OutputStream out) throws TransportException Fetch objects we don't have but that are reachable from advertised refs.Only one call per connection is allowed. Subsequent calls will result in
TransportException
.Implementations are free to use network connections as necessary to efficiently (for both client and server) transfer objects from the remote repository into this repository. When possible implementations should avoid replacing/overwriting/duplicating an object already available in the local destination repository. Locally available objects and packs should always be preferred over remotely available objects and packs.
Transport.isFetchThin()
should be honored if applicable.- Specified by:
fetch
in interfaceFetchConnection
- Parameters:
monitor
- progress monitor to inform the end-user about the amount of work completed, or to indicate cancellation. Implementations should poll the monitor at regular intervals to look for cancellation requests from the user.want
- one or more refs advertised by this connection that the caller wants to store locally.have
- additional objects known to exist in the destination repository, especially if they aren't yet reachable by the ref database. Connections should take this set as an addition to what is reachable through all Refs, not in replace of it.out
- OutputStream to write sideband messages to- Throws:
TransportException
- objects could not be copied due to a network failure, protocol error, or error on remote side, or connection was already used for fetch.
-
didFetchIncludeTags
public boolean didFetchIncludeTags()Did the lastFetchConnection.fetch(ProgressMonitor, Collection, Set)
get tags?Some Git aware transports are able to implicitly grab an annotated tag if
TagOpt.AUTO_FOLLOW
orTagOpt.FETCH_TAGS
was selected and the object the tag peels to (references) was transferred as part of the lastFetchConnection.fetch(ProgressMonitor, Collection, Set)
call. If it is possible for such tags to have been included in the transfer this method returns true, allowing the caller to attempt tag discovery.By returning only true/false (and not the actual list of tags obtained) the transport itself does not need to be aware of whether or not tags were included in the transfer. Default implementation of
FetchConnection.didFetchIncludeTags()
- returning false.- Specified by:
didFetchIncludeTags
in interfaceFetchConnection
- Returns:
- true if the last fetch call implicitly included tag objects; false if tags were not implicitly obtained.
-
doFetch
protected abstract void doFetch(ProgressMonitor monitor, Collection<Ref> want, Set<ObjectId> have) throws TransportException Implementation offetch(ProgressMonitor, Collection, Set)
without checking for multiple fetch.- Parameters:
monitor
- as infetch(ProgressMonitor, Collection, Set)
want
- as infetch(ProgressMonitor, Collection, Set)
have
- as infetch(ProgressMonitor, Collection, Set)
- Throws:
TransportException
- as infetch(ProgressMonitor, Collection, Set)
, but implementation doesn't have to care about multiplefetch(ProgressMonitor, Collection, Set)
calls, as it is checked in this class.
-