common

package
v5.12.0 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package common implements the git pack protocol with a pluggable transport. This is a low-level package to implement new transports. Use a concrete implementation instead (e.g. http, file, ssh).

A simple example of usage can be found in the file package.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTimeoutExceeded = errors.New("timeout exceeded")
)

Functions

func DecodeUploadPackResponse

func DecodeUploadPackResponse(r io.ReadCloser, req *packp.UploadPackRequest) (
	*packp.UploadPackResponse, error,
)

DecodeUploadPackResponse decodes r into a new packp.UploadPackResponse

func NewClient

func NewClient(runner Commander) transport.Transport

NewClient creates a new client using the given Commander.

func ServeReceivePack

func ServeReceivePack(cmd ServerCommand, s transport.ReceivePackSession) error

func ServeUploadPack

func ServeUploadPack(cmd ServerCommand, s transport.UploadPackSession) (err error)

Types

type Command

type Command interface {
	// StderrPipe returns a pipe that will be connected to the command's
	// standard error when the command starts. It should not be called after
	// Start.
	StderrPipe() (io.Reader, error)
	// StdinPipe returns a pipe that will be connected to the command's
	// standard input when the command starts. It should not be called after
	// Start. The pipe should be closed when no more input is expected.
	StdinPipe() (io.WriteCloser, error)
	// StdoutPipe returns a pipe that will be connected to the command's
	// standard output when the command starts. It should not be called after
	// Start.
	StdoutPipe() (io.Reader, error)
	// Start starts the specified command. It does not wait for it to
	// complete.
	Start() error
	// Close closes the command and releases any resources used by it. It
	// will block until the command exits.
	Close() error
}

Command is used for a single command execution. This interface is modeled after exec.Cmd and ssh.Session in the standard library.

type CommandKiller

type CommandKiller interface {
	// Kill and close the session whatever the state it is. It will block until
	// the command is terminated.
	Kill() error
}

CommandKiller expands the Command interface, enabling it for being killed.

type Commander

type Commander interface {
	// Command creates a new Command for the given git command and
	// endpoint. cmd can be git-upload-pack or git-receive-pack. An
	// error should be returned if the endpoint is not supported or the
	// command cannot be created (e.g. binary does not exist, connection
	// cannot be established).
	Command(cmd string, ep *transport.Endpoint, auth transport.AuthMethod) (Command, error)
}

Commander creates Command instances. This is the main entry point for transport implementations.

type MockCommand added in v5.10.0

type MockCommand struct {
	// contains filtered or unexported fields
}

func (MockCommand) Close added in v5.10.0

func (c MockCommand) Close() error

func (MockCommand) Start added in v5.10.0

func (c MockCommand) Start() error

func (MockCommand) StderrPipe added in v5.10.0

func (c MockCommand) StderrPipe() (io.Reader, error)

func (MockCommand) StdinPipe added in v5.10.0

func (c MockCommand) StdinPipe() (io.WriteCloser, error)

func (MockCommand) StdoutPipe added in v5.10.0

func (c MockCommand) StdoutPipe() (io.Reader, error)

type MockCommander added in v5.10.0

type MockCommander struct {
	// contains filtered or unexported fields
}

func (MockCommander) Command added in v5.10.0

func (c MockCommander) Command(cmd string, ep *transport.Endpoint, auth transport.AuthMethod) (Command, error)

type ServerCommand

type ServerCommand struct {
	Stderr io.Writer
	Stdout io.WriteCloser
	Stdin  io.Reader
}

ServerCommand is used for a single server command execution.

Jump to

Keyboard shortcuts

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