Documentation
¶
Index ¶
- Constants
- func Bands() []string
- func GetPackfiles(repoPath string) ([]os.FileInfo, error)
- func HasBitmap(repoPath string) (bool, error)
- func IsMissingBloomFilters(repoPath string) (bool, error)
- func LogObjectsInfo(ctx context.Context, gitCmdFactory git.CommandFactory, repo repository.GitRepo)
- func LooseObjects(ctx context.Context, gitCmdFactory git.CommandFactory, ...) (int64, error)
- func PackfilesCount(repoPath string) (int, error)
- func UnpackedObjects(repoPath string) (int64, error)
- type FetchPack
- type HTTPClone
- type HTTPFetchPack
- func (p *HTTPFetchPack) BandFirstPacket(b string) time.Duration
- func (p *HTTPFetchPack) BandPackets(b string) int
- func (p *HTTPFetchPack) BandPayloadSize(b string) int64
- func (p *HTTPFetchPack) HTTPStatus() int
- func (p *HTTPFetchPack) LargestPacketSize() int
- func (p *HTTPFetchPack) NAK() time.Duration
- func (p *HTTPFetchPack) Packets() int
- func (p *HTTPFetchPack) RefsWanted() int
- func (p *HTTPFetchPack) ResponseBody() time.Duration
- func (p *HTTPFetchPack) ResponseHeader() time.Duration
- type HTTPPush
- type HTTPReferenceDiscovery
- func (d HTTPReferenceDiscovery) Caps() []string
- func (d HTTPReferenceDiscovery) FirstGitPacket() time.Duration
- func (d HTTPReferenceDiscovery) HTTPStatus() int
- func (d HTTPReferenceDiscovery) Packets() int
- func (d HTTPReferenceDiscovery) PayloadSize() int64
- func (d HTTPReferenceDiscovery) Refs() []Reference
- func (d HTTPReferenceDiscovery) ResponseBody() time.Duration
- func (d HTTPReferenceDiscovery) ResponseHeader() time.Duration
- type HTTPSendPack
- type PackfileNegotiation
- type PushCommand
- type Reference
- type ReferenceDiscovery
- type SendPack
Constants ¶
const ( // CommitGraphRelPath is the path to the file that stores info about commit graph. CommitGraphRelPath = "objects/info/commit-graph" // CommitGraphsRelPath is the path to the folder that stores commit graph chain files. CommitGraphsRelPath = "objects/info/commit-graphs" // CommitGraphChainRelPath is the path to the file that stores info about commit graph chain files. CommitGraphChainRelPath = CommitGraphsRelPath + "/commit-graph-chain" )
Variables ¶
This section is empty.
Functions ¶
func Bands ¶
func Bands() []string
Bands returns the slice of bands which git uses to transport different kinds of data in a multiplexed way. See https://git-scm.com/docs/protocol-capabilities/2.24.0#_side_band_side_band_64k for more information about the different bands.
func GetPackfiles ¶
GetPackfiles returns the FileInfo of packfiles inside a repository.
func IsMissingBloomFilters ¶ added in v14.3.0
IsMissingBloomFilters checks if the commit graph chain exists and has a Bloom filters indicators. If the chain contains multiple files, each one is checked until at least one is missing a Bloom filter indicator or until there are no more files to check. https://git-scm.com/docs/commit-graph#_file_layout
func LogObjectsInfo ¶
func LogObjectsInfo(ctx context.Context, gitCmdFactory git.CommandFactory, repo repository.GitRepo)
LogObjectsInfo read statistics of the git repo objects and logs it under 'count-objects' key as structured entry.
func LooseObjects ¶
func LooseObjects(ctx context.Context, gitCmdFactory git.CommandFactory, repository repository.GitRepo) (int64, error)
LooseObjects returns the number of loose objects that are not in a packfile.
func PackfilesCount ¶
PackfilesCount returns the number of packfiles a repository has.
func UnpackedObjects ¶
UnpackedObjects returns the number of loose objects that have a timestamp later than the newest packfile.
Types ¶
type FetchPack ¶
type FetchPack struct {
// ReportProgress is an optional callback set by the caller. If set, this function
// will be called for all received progress packets.
ReportProgress func([]byte)
// contains filtered or unexported fields
}
FetchPack is used to parse the response body of a git-fetch-pack(1) request.
type HTTPClone ¶ added in v14.1.0
type HTTPClone struct {
// ReferenceDiscovery is the reference discovery performed as part of the clone.
ReferenceDiscovery HTTPReferenceDiscovery
// FetchPack is the response to a git-fetch-pack(1) request which computes and transmits the
// packfile.
FetchPack HTTPFetchPack
}
HTTPClone hosts information about a typical HTTP-based clone.
type HTTPFetchPack ¶
type HTTPFetchPack struct {
// contains filtered or unexported fields
}
HTTPFetchPack is a FetchPack obtained via a clone of a target repository via HTTP. It contains additional information about the cloning process like status codes and timings.
func (*HTTPFetchPack) BandFirstPacket ¶
func (p *HTTPFetchPack) BandFirstPacket(b string) time.Duration
BandFirstPacket returns how long it took to receive the first packet on a specific sideband.
func (*HTTPFetchPack) BandPackets ¶
func (p *HTTPFetchPack) BandPackets(b string) int
BandPackets returns how many packets were received on a specific sideband.
func (*HTTPFetchPack) BandPayloadSize ¶
func (p *HTTPFetchPack) BandPayloadSize(b string) int64
BandPayloadSize returns how many bytes were received on a specific sideband.
func (*HTTPFetchPack) HTTPStatus ¶
func (p *HTTPFetchPack) HTTPStatus() int
HTTPStatus returns the HTTP status code.
func (*HTTPFetchPack) LargestPacketSize ¶
func (p *HTTPFetchPack) LargestPacketSize() int
LargestPacketSize returns the largest packet size received.
func (*HTTPFetchPack) NAK ¶
func (p *HTTPFetchPack) NAK() time.Duration
NAK returns how long it took to receive the NAK which signals that negotiation has concluded.
func (*HTTPFetchPack) Packets ¶
func (p *HTTPFetchPack) Packets() int
Packets returns the number of Git packets received.
func (*HTTPFetchPack) RefsWanted ¶
func (p *HTTPFetchPack) RefsWanted() int
RefsWanted returns the number of references sent to the remote repository as "want"s.
func (*HTTPFetchPack) ResponseBody ¶
func (p *HTTPFetchPack) ResponseBody() time.Duration
ResponseBody returns how long it took to receive the first bytes of the response body.
func (*HTTPFetchPack) ResponseHeader ¶
func (p *HTTPFetchPack) ResponseHeader() time.Duration
ResponseHeader returns how long it took to receive the response header.
type HTTPPush ¶ added in v14.1.0
type HTTPPush struct {
// SendPack is the upload of the packfile performed as part of the clone.
SendPack HTTPSendPack
}
HTTPPush hosts information about a typical HTTP-based push.
type HTTPReferenceDiscovery ¶
type HTTPReferenceDiscovery struct {
// contains filtered or unexported fields
}
HTTPReferenceDiscovery is a ReferenceDiscovery obtained via a clone of a target repository via HTTP. It contains additional information about the cloning process like status codes and timings.
func (HTTPReferenceDiscovery) Caps ¶
func (d HTTPReferenceDiscovery) Caps() []string
Caps returns all announced capabilities.
func (HTTPReferenceDiscovery) FirstGitPacket ¶
func (d HTTPReferenceDiscovery) FirstGitPacket() time.Duration
FirstGitPacket returns how long it took to receive the first Git packet.
func (HTTPReferenceDiscovery) HTTPStatus ¶
func (d HTTPReferenceDiscovery) HTTPStatus() int
HTTPStatus returns the HTTP status code.
func (HTTPReferenceDiscovery) Packets ¶
func (d HTTPReferenceDiscovery) Packets() int
Packets returns the number of Git packets received.
func (HTTPReferenceDiscovery) PayloadSize ¶
func (d HTTPReferenceDiscovery) PayloadSize() int64
PayloadSize returns the total size of all pktlines' data.
func (HTTPReferenceDiscovery) Refs ¶
func (d HTTPReferenceDiscovery) Refs() []Reference
Refs returns all announced references.
func (HTTPReferenceDiscovery) ResponseBody ¶
func (d HTTPReferenceDiscovery) ResponseBody() time.Duration
ResponseBody returns how long it took to receive the first bytes of the response body.
func (HTTPReferenceDiscovery) ResponseHeader ¶
func (d HTTPReferenceDiscovery) ResponseHeader() time.Duration
ResponseHeader returns how long it took to receive the response header.
type HTTPSendPack ¶ added in v14.1.0
type HTTPSendPack struct {
// contains filtered or unexported fields
}
HTTPSendPack encapsulates statistics about an emulated git-send-pack(1) request.
func (*HTTPSendPack) BandFirstPacket ¶ added in v14.1.0
func (p *HTTPSendPack) BandFirstPacket(b string) time.Duration
BandFirstPacket returns how long it took to receive the first packet on a specific sideband.
func (*HTTPSendPack) BandPayloadSize ¶ added in v14.1.0
func (p *HTTPSendPack) BandPayloadSize(b string) int64
BandPayloadSize returns how many bytes were received on a specific sideband.
func (*HTTPSendPack) ResponseBody ¶ added in v14.1.0
func (p *HTTPSendPack) ResponseBody() time.Duration
ResponseBody returns how long it took to receive the last bytes of the response body.
type PackfileNegotiation ¶
type PackfileNegotiation struct {
// Total size of all pktlines' data
PayloadSize int64
// Total number of packets
Packets int
// Capabilities announced by the client
Caps []string
// Wants is the number of objects the client announced it wants
Wants int
// Haves is the number of objects the client announced it has
Haves int
// Shallows is the number of shallow boundaries announced by the client
Shallows int
// Deepen-filter. One of "deepen <depth>", "deepen-since <timestamp>", "deepen-not <ref>".
Deepen string
// Filter-spec specified by the client.
Filter string
}
nolint: revive,stylecheck // This is unintentionally missing documentation.
func ParsePackfileNegotiation ¶
func ParsePackfileNegotiation(body io.Reader) (PackfileNegotiation, error)
nolint: revive,stylecheck // This is unintentionally missing documentation.
func (*PackfileNegotiation) Parse ¶
func (n *PackfileNegotiation) Parse(body io.Reader) error
Parse parses a packfile negotiation. It expects the following format:
want <OID> <capabilities\n [want <OID>...] [shallow <OID>] [deepen <depth>|deepen-since <timestamp>|deepen-not <ref>] [filter <filter-spec>] flush have <OID> flush|done
func (*PackfileNegotiation) UpdateMetrics ¶
func (n *PackfileNegotiation) UpdateMetrics(metrics *prometheus.CounterVec)
UpdateMetrics updates Prometheus counters with features that have been used during a packfile negotiation.
type PushCommand ¶ added in v14.1.0
type PushCommand struct {
// Reference is the reference that shall be updated.
Reference git.ReferenceName
// OldOID is the expected state of the reference before being updated.
OldOID git.ObjectID
// NewOID is the expected state of the reference after being updated.
NewOID git.ObjectID
}
PushCommand is a command updating remote references.
type Reference ¶
type Reference struct {
// Oid is the object ID the reference points to
Oid string
// Name of the reference. The name will be suffixed with ^{} in case
// the reference is the peeled commit.
Name string
}
Reference as used by the reference discovery protocol
type ReferenceDiscovery ¶
type ReferenceDiscovery struct {
// FirstPacket tracks the time when the first pktline was received
FirstPacket time.Time
// LastPacket tracks the time when the last pktline was received
LastPacket time.Time
// PayloadSize tracks the size of all pktlines' data
PayloadSize int64
// Packets tracks the total number of packets consumed
Packets int
// Refs contains all announced references
Refs []Reference
// Caps contains all supported capabilities
Caps []string
}
ReferenceDiscovery contains information about a reference discovery session.
func ParseReferenceDiscovery ¶
func ParseReferenceDiscovery(body io.Reader) (ReferenceDiscovery, error)
ParseReferenceDiscovery parses a client's reference discovery stream and returns either information about the reference discovery or an error in case it couldn't make sense of the client's request.
func (*ReferenceDiscovery) Parse ¶
func (d *ReferenceDiscovery) Parse(body io.Reader) error
Parse parses a client's reference discovery stream into the given ReferenceDiscovery struct or returns an error in case it couldn't make sense of the client's request.
Expected protocol: - "# service=git-upload-pack\n" - FLUSH - "<OID> <ref>\x00<capabilities>\n" - "<OID> <ref>\n" - ... - FLUSH
type SendPack ¶ added in v14.1.0
type SendPack struct {
// ReportProgress is an optional callback set by the caller. If set, this function
// will be called for all received progress packets.
ReportProgress func([]byte)
// contains filtered or unexported fields
}
SendPack is used to parse the response body of a git-send-pack(1) request.
func (*SendPack) Parse ¶ added in v14.1.0
Parse parses the server response from a git-send-pack(1) request. The expected response is documented in git.git:Documentation/techincal/pack-protocol.txt. We expect that the report-status capability is active and thus don't support the report-status-v2 protocol.