C# Class GitSharp.Core.Transport.WalkPushConnection

Generic push support for dumb transport protocols. Since there are no Git-specific smarts on the remote side of the connection the client side must handle everything on its own. The generic push support requires being able to delete, create and overwrite files on the remote side, as well as create any missing directories (if necessary). Typically this can be handled through an FTP style protocol. Objects not on the remote side are uploaded as pack files, using one pack file per invocation. This simplifies the implementation as only two data files need to be written to the remote repository. Push support supplied by this class is not multiuser safe. Concurrent pushes to the same repository may yield an inconsistent reference database which may confuse fetch clients. A single push is concurrently safe with multiple fetch requests, due to the careful order of operations used to update the repository. Clients fetching may receive transient failures due to short reads on certain files if the protocol does not support atomic file replacement. see WalkRemoteObjectDatabase.
Inheritance: BaseConnection, IPushConnection
ファイルを表示 Open project: stschake/GitSharp Class Usage Examples

Private Properties

Property Type Description
CreateNewRepository void
DeleteCommand void
PickHead string
SafeDelete void
Sendpack void
UpdateCommand void

Public Methods

Method Description
Close ( ) : void
Push ( ProgressMonitor monitor, RemoteRefUpdate>.IDictionary refUpdates ) : void
WalkPushConnection ( IWalkTransport walkTransport, WalkRemoteObjectDatabase w ) : System

Private Methods

Method Description
CreateNewRepository ( IList updates ) : void
DeleteCommand ( RemoteRefUpdate u ) : void
PickHead ( IList updates ) : string
SafeDelete ( string path ) : void
Sendpack ( IEnumerable updates, ProgressMonitor monitor ) : void
UpdateCommand ( RemoteRefUpdate u ) : void

Method Details

Close() public method

public Close ( ) : void
return void

Push() public method

public Push ( ProgressMonitor monitor, RemoteRefUpdate>.IDictionary refUpdates ) : void
monitor ProgressMonitor
refUpdates RemoteRefUpdate>.IDictionary
return void

WalkPushConnection() public method

public WalkPushConnection ( IWalkTransport walkTransport, WalkRemoteObjectDatabase w ) : System
walkTransport IWalkTransport
w WalkRemoteObjectDatabase
return System