Documentation
¶
Overview ¶
Package transport includes the implementation for different transport protocols.
`Client` can be used to fetch and send packfiles to a git server. The `client` package provides higher level functions to instantiate the appropriate `Client` based on the repository URL.
go-git supports HTTP and SSH (see `Protocols`), but you can also install your own protocols (see the `client` package).
Each protocol has its own implementation of `Client`, but you should generally not use them directly, use `client.NewClient` instead.
Index ¶
Constants ¶
const ( UploadPackServiceName = "git-upload-pack" ReceivePackServiceName = "git-receive-pack" )
Variables ¶
var ( ErrRepositoryNotFound = errors.New("repository not found") ErrEmptyRemoteRepository = errors.New("remote repository is empty") ErrAuthorizationRequired = errors.New("authorization required") ErrEmptyUploadPackRequest = errors.New("empty git-upload-pack given") ErrInvalidAuthMethod = errors.New("invalid auth method") )
var UnsupportedCapabilities = []capability.Capability{ capability.MultiACK, capability.MultiACKDetailed, capability.ThinPack, }
UnsupportedCapabilities are the capabilities not supported by any client implementation
Functions ¶
func FilterUnsupportedCapabilities ¶
func FilterUnsupportedCapabilities(list *capability.List)
FilterUnsupportedCapabilities it filter out all the UnsupportedCapabilities from a capability.List, the intended usage is on the client implementation to filter the capabilities from an AdvRefs message.
Types ¶
type Client ¶
type Client interface {
// NewFetchPackSession starts a git-fetch-pack session for an endpoint.
NewFetchPackSession(Endpoint) (FetchPackSession, error)
// NewSendPackSession starts a git-send-pack session for an endpoint.
NewSendPackSession(Endpoint) (SendPackSession, error)
}
Client can initiate git-fetch-pack and git-send-pack processes.
type Endpoint ¶
type FetchPackSession ¶
type FetchPackSession interface {
Session
// FetchPack takes a request and returns a reader for the packfile
// received from the server.
FetchPack(*packp.UploadPackRequest) (*packp.UploadPackResponse, error)
}
FetchPackSession represents a git-fetch-pack session. A git-fetch-pack session has two steps: reference discovery (`AdvertisedReferences` function) and fetching pack (`FetchPack` function). In that order.
type SendPackSession ¶
type SendPackSession interface {
Session
// UpdateReferences sends an update references request and a packfile
// reader and returns a ReportStatus and error.
SendPack(*packp.ReferenceUpdateRequest) (*packp.ReportStatus, error)
}
SendPackSession represents a git-send-pack session. A git-send-pack session has two steps: reference discovery (`AdvertisedReferences` function) and sending pack (`SendPack` function). In that order.
type Session ¶
type Session interface {
SetAuth(auth AuthMethod) error
// AdvertisedReferences retrieves the advertised references for a
// repository.
// If the repository does not exist, returns ErrRepositoryNotFound.
// If the repository exists, but is empty, returns ErrEmptyRemoteRepository.
AdvertisedReferences() (*packp.AdvRefs, error)
io.Closer
}
Source Files
¶
- common.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package http implements a HTTP client for go-git.
|
Package http implements a HTTP client for go-git. |
|
internal
|
|
|
common
Package common implements the git pack protocol with a pluggable transport.
|
Package common implements the git pack protocol with a pluggable transport. |
|
Package test implements common test suite for different transport implementations.
|
Package test implements common test suite for different transport implementations. |