org.eclipse.jgit.transport
Class TransportAmazonS3

java.lang.Object
  extended by org.eclipse.jgit.transport.Transport
      extended by org.eclipse.jgit.transport.HttpTransport
          extended by org.eclipse.jgit.transport.TransportAmazonS3
All Implemented Interfaces:
WalkTransport

public class TransportAmazonS3
extends HttpTransport
implements WalkTransport

Transport over the non-Git aware Amazon S3 protocol.

This transport communicates with the Amazon S3 servers (a non-free commercial hosting service that users must subscribe to). Some users may find transport to and from S3 to be a useful backup service.

The transport does not require any specialized Git support on the remote (server side) repository, as Amazon does not provide any such support. Repository files are retrieved directly through the S3 API, which uses extended HTTP/1.1 semantics. This make it possible to read or write Git data from a remote repository that is stored on S3.

Unlike the HTTP variant (see TransportHttp) we rely upon being able to list objects in a bucket, as the S3 API supports this function. By listing the bucket contents we can avoid relying on objects/info/packs or info/refs in the remote repository.

Concurrent pushing over this transport is not supported. Multiple concurrent push operations may cause confusion in the repository state.

See Also:
WalkFetchConnection, WalkPushConnection

Nested Class Summary
 
Nested classes/interfaces inherited from class org.eclipse.jgit.transport.Transport
Transport.Operation
 
Field Summary
 
Fields inherited from class org.eclipse.jgit.transport.Transport
DEFAULT_FETCH_THIN, DEFAULT_PUSH_THIN, local, REFSPEC_PUSH_ALL, REFSPEC_TAGS, uri
 
Method Summary
 void close()
          Close any resources used by this transport.
 FetchConnection openFetch()
          Begins a new connection for fetching from the remote repository.
 PushConnection openPush()
          Begins a new connection for pushing into the remote repository.
 
Methods inherited from class org.eclipse.jgit.transport.Transport
applyConfig, fetch, findRemoteRefUpdatesFor, findRemoteRefUpdatesFor, getCredentialsProvider, getOptionReceivePack, getOptionUploadPack, getPackConfig, getTagOpt, getTimeout, getTransportProtocols, getURI, isCheckFetchedObjects, isDryRun, isFetchThin, isPushThin, isRemoveDeletedRefs, open, open, open, open, open, open, openAll, openAll, openAll, openAll, push, register, setCheckFetchedObjects, setCredentialsProvider, setDryRun, setFetchThin, setOptionReceivePack, setOptionUploadPack, setPackConfig, setPushThin, setRemoveDeletedRefs, setTagOpt, setTimeout, unregister
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

openFetch

public FetchConnection openFetch()
                          throws TransportException
Description copied from class: Transport
Begins a new connection for fetching from the remote repository.

Specified by:
openFetch in class Transport
Returns:
a fresh connection to fetch from the remote repository.
Throws:
TransportException - the remote connection could not be established.

openPush

public PushConnection openPush()
                        throws TransportException
Description copied from class: Transport
Begins a new connection for pushing into the remote repository.

Specified by:
openPush in class Transport
Returns:
a fresh connection to push into the remote repository.
Throws:
TransportException - the remote connection could not be established

close

public void close()
Description copied from class: Transport
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.

Specified by:
close in class Transport


Copyright © 2012. All Rights Reserved.