Class TransportLocal
- All Implemented Interfaces:
AutoCloseable,PackTransport
This transport is suitable for use on the local system, where the caller has direct read or write access to the "remote" repository.
By default this transport works by spawning a helper thread within the same JVM, and processes the data transfer using a shared memory buffer between the calling thread and the helper thread. This is a pure-Java implementation which does not require forking an external process.
However, during openFetch(), if the Transport has configured
Transport.getOptionUploadPack() to be anything other than
"git-upload-pack" or "git upload-pack", this
implementation will fork and execute the external process, using an operating
system pipe to transfer data.
Similarly, during openPush(), if the Transport has configured
Transport.getOptionReceivePack() to be anything other than
"git-receive-pack" or "git receive-pack", this
implementation will fork and execute the external process, using an operating
system pipe to transfer data.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class(package private) classNested classes/interfaces inherited from class org.eclipse.jgit.transport.Transport
Transport.Operation -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final TransportProtocolprivate final FileFields inherited from class org.eclipse.jgit.transport.Transport
DEFAULT_FETCH_THIN, DEFAULT_PUSH_THIN, local, protocol, REFSPEC_PUSH_ALL, REFSPEC_TAGS, uri -
Constructor Summary
ConstructorsConstructorDescriptionTransportLocal(Repository local, URIish uri, File gitDir) TransportLocal(URIish uri, File gitDir) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()(package private) ReceivePack(package private) UploadPackBegins a new connection for fetching from the remote repository.openFetch(Collection<RefSpec> refSpecs, String... additionalPatterns) Begins a new connection for fetching from the remote repository.openPush()Begins a new connection for pushing into the remote repository.private RepositoryopenRepo()protected ProcessSpawn processprivate Processspawn(String cmd, TransferConfig.ProtocolVersion protocolVersion) Spawn processMethods inherited from class org.eclipse.jgit.transport.Transport
applyConfig, fetch, fetch, findRemoteRefUpdatesFor, findRemoteRefUpdatesFor, findRemoteRefUpdatesFor, findRemoteRefUpdatesFor, findTrackingRefName, getCredentialsProvider, getFilterBlobLimit, getFilterSpec, getObjectChecker, getOptionReceivePack, getOptionUploadPack, getPackConfig, getPushOptions, getTagOpt, getTimeout, getTransportProtocols, getURI, isCheckFetchedObjects, isDryRun, isFetchThin, isPushAtomic, isPushThin, isRemoveDeletedRefs, open, open, open, open, open, open, open, openAll, openAll, openAll, openAll, push, push, register, setCheckFetchedObjects, setCredentialsProvider, setDryRun, setFetchThin, setFilterBlobLimit, setFilterSpec, setObjectChecker, setOptionReceivePack, setOptionUploadPack, setPackConfig, setPushAtomic, setPushOptions, setPushThin, setRemoveDeletedRefs, setTagOpt, setTimeout, unregister
-
Field Details
-
PROTO_LOCAL
-
remoteGitDir
-
-
Constructor Details
-
TransportLocal
TransportLocal(Repository local, URIish uri, File gitDir) -
TransportLocal
-
-
Method Details
-
createUploadPack
-
createReceivePack
-
openRepo
- Throws:
TransportException
-
openFetch
Begins a new connection for fetching from the remote repository.If the transport has no local repository, the fetch connection can only be used for reading remote refs.
- Specified by:
openFetchin classTransport- Returns:
- a fresh connection to fetch from the remote repository.
- Throws:
TransportException- the remote connection could not be established.
-
openFetch
public FetchConnection openFetch(Collection<RefSpec> refSpecs, String... additionalPatterns) throws TransportException Description copied from class:TransportBegins a new connection for fetching from the remote repository.If the transport has no local repository, the fetch connection can only be used for reading remote refs.
If the server supports git protocol V2, the
RefSpecs and the additional patterns, if any, are used to restrict the server's ref advertisement to matching refs only.Transports that want to support git protocol V2 must override this; the default implementation ignores its arguments and calls
Transport.openFetch().- Overrides:
openFetchin classTransport- Parameters:
refSpecs- that will be fetched viaFetchConnection.fetch(ProgressMonitor, Collection, java.util.Set, OutputStream)lateradditionalPatterns- that will be set as ref prefixes if the server supports git protocol V2;nullvalues are ignored- Returns:
- a fresh connection to fetch from the remote repository.
- Throws:
TransportException- the remote connection could not be established.
-
openPush
Begins a new connection for pushing into the remote repository.- Specified by:
openPushin classTransport- Returns:
- a fresh connection to push into the remote repository.
- Throws:
TransportException- the remote connection could not be established
-
close
public void close()Close any resources used by this transport.
If the remote repository is contacted by a network socket this method must close that network socket, disconnecting the two peers. If the remote repository is actually local (same system) this method must close any open file handles used to read the "remote" repository.
AutoClosable.close()declares that it throwsException. Implementers shouldn't throw checked exceptions. This override narrows the signature to prevent them from doing so.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein classTransport
-
spawn
Spawn process- Parameters:
cmd- command- Returns:
- a
Processobject. - Throws:
TransportException- if any.
-
spawn
private Process spawn(String cmd, TransferConfig.ProtocolVersion protocolVersion) throws TransportException Spawn process- Parameters:
cmd- commandprotocolVersion- to use- Returns:
- a
Processobject. - Throws:
TransportException- if any.
-