stats

package
v14.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2022 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
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

func GetPackfiles(repoPath string) ([]os.FileInfo, error)

GetPackfiles returns the FileInfo of packfiles inside a repository.

func HasBitmap

func HasBitmap(repoPath string) (bool, error)

HasBitmap returns whether or not the repository contains an object bitmap.

func IsMissingBloomFilters added in v14.3.0

func IsMissingBloomFilters(repoPath string) (bool, error)

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

func PackfilesCount(repoPath string) (int, error)

PackfilesCount returns the number of packfiles a repository has.

func UnpackedObjects

func UnpackedObjects(repoPath string) (int64, error)

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.

func (*FetchPack) Parse

func (f *FetchPack) Parse(body io.Reader) error

Parse parses the server response from 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.

func PerformHTTPClone added in v14.1.0

func PerformHTTPClone(ctx context.Context, url, user, password string, interactive bool) (HTTPClone, error)

PerformHTTPClone does a Git HTTP clone, discarding cloned data to /dev/null.

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.

func PerformHTTPPush added in v14.1.0

func PerformHTTPPush(
	ctx context.Context,
	url, user, password string,
	commands []PushCommand,
	packfile io.Reader,
	interactive bool,
) (HTTPPush, error)

PerformHTTPPush emulates a git-push(1) over the HTTP protocol.

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

func (s *SendPack) Parse(body io.Reader) error

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL