Documentation
¶
Overview ¶
Package plumbing implements the core interfaces and structs used by go-git.
Index ¶
- Constants
- Variables
- func HashesSort(a []Hash)
- func IsHash(s string) bool
- func ValidateBranchName(name string) error
- func ValidateTagName(name string) error
- type DeltaObject
- type EncodedObject
- type Hash
- type HashSlice
- type Hasher
- type MemoryObject
- func (o *MemoryObject) Close() error
- func (o *MemoryObject) Hash() Hash
- func (o *MemoryObject) Reader() (io.ReadCloser, error)
- func (o *MemoryObject) SetSize(s int64)
- func (o *MemoryObject) SetType(t ObjectType)
- func (o *MemoryObject) Size() int64
- func (o *MemoryObject) Type() ObjectType
- func (o *MemoryObject) Write(p []byte) (n int, err error)
- func (o *MemoryObject) Writer() (io.WriteCloser, error)
- type ObjectHasher
- type ObjectID
- func (s ObjectID) Bytes() []byte
- func (s ObjectID) Compare(b []byte) int
- func (s ObjectID) Equal(in ObjectID) bool
- func (s ObjectID) HasPrefix(prefix []byte) bool
- func (s ObjectID) HexSize() int
- func (s ObjectID) IsZero() bool
- func (s *ObjectID) ReadFrom(r io.Reader) (int64, error)
- func (s *ObjectID) ResetBySize(idSize int)
- func (s ObjectID) Size() int
- func (s ObjectID) String() string
- func (s *ObjectID) Write(in []byte) (int, error)
- func (s *ObjectID) WriteTo(w io.Writer) (int64, error)
- type ObjectType
- type PermanentError
- type Reference
- type ReferenceName
- func (r ReferenceName) IsBranch() bool
- func (r ReferenceName) IsNote() bool
- func (r ReferenceName) IsPeeled() bool
- func (r ReferenceName) IsRemote() bool
- func (r ReferenceName) IsRoot() bool
- func (r ReferenceName) IsSafe() bool
- func (r ReferenceName) IsTag() bool
- func (r ReferenceName) IsUnderRefs() bool
- func (r ReferenceName) Short() string
- func (r ReferenceName) String() string
- func (r ReferenceName) Validate() error
- type ReferenceType
- type Revision
- type TagMode
Constants ¶
const ( // RefPrefix is the sub-tree every ordinary reference lives under. The // reference store, the receive-pack gate and both ends of the transport // all draw a line at it, so they draw it at the same string. RefPrefix = "refs/" // RefHeadPrefix is the sub-tree branches live under. RefHeadPrefix = RefPrefix + "heads/" )
Variables ¶
var ( // ErrObjectNotFound is returned when an object is not found. ErrObjectNotFound = errors.New("object not found") // ErrInvalidType is returned when an invalid object type is provided. ErrInvalidType = errors.New("invalid object type") )
var ( // ErrReferenceNotFound is returned when a reference is not found. ErrReferenceNotFound = errors.New("reference not found") // ErrInvalidReferenceName is returned when a reference name is invalid. ErrInvalidReferenceName = errors.New("invalid reference name") )
var RefRevParseRules = []string{
"%s",
"refs/%s",
"refs/tags/%s",
"refs/heads/%s",
"refs/remotes/%s",
"refs/remotes/%s/HEAD",
}
RefRevParseRules are a set of rules to parse references into short names, or expand into a full reference. These are the same rules as used by git in shorten_unambiguous_ref and expand_ref. See: https://github.com/git/git/blob/e0aaa1b6532cfce93d87af9bc813fb2e7a7ce9d7/refs.c#L417
Functions ¶
func ValidateBranchName ¶
ValidateBranchName reports whether name, a literal branch shorthand, may be used to create a branch. It applies the naming checks from Git's check_branch_ref (refs.c): the shorthand must not begin with "-", the resulting reference must not be refs/heads/HEAD, and the reference name must satisfy Validate. It does not perform repository-dependent expansion of expressions such as "@{-1}"; callers must resolve those before validating the resulting name.
The leading "-" is not a check_refname_format rule and Git does not apply it to a name arriving over the wire: refs/heads/-foo is a reference git fetch and git clone store without complaint, and git update-ref creates on request. This restriction applies at creation time. Existing leading-hyphen names can still be read, written and deleted; for example, git branch -D -- -foo removes an existing branch named -foo.
https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs.c#L761-L781
func ValidateTagName ¶
ValidateTagName reports whether name, the shorthand of a tag as a user spells it, may be used to create a tag. It mirrors Git's check_tag_ref (refs.c): the shorthand must not begin with "-" nor be "HEAD", and the reference name must satisfy Validate. See ValidateBranchName for why the "-" rule belongs here rather than in Validate.
https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs.c#L783-L792
Types ¶
type DeltaObject ¶
type DeltaObject interface {
EncodedObject
// BaseHash returns the hash of the object used as base for this delta.
BaseHash() Hash
// ActualHash returns the hash of the object after applying the delta.
ActualHash() Hash
// Size returns the size of the object after applying the delta.
ActualSize() int64
}
DeltaObject is an EncodedObject representing a delta.
type EncodedObject ¶
type EncodedObject interface {
Hash() Hash
Type() ObjectType
SetType(ObjectType)
Size() int64
SetSize(int64)
Reader() (io.ReadCloser, error)
Writer() (io.WriteCloser, error)
}
EncodedObject is a generic representation of any git object.
type HashSlice ¶
type HashSlice []Hash
HashSlice attaches the methods of sort.Interface to []Hash, sorting in increasing order.
type Hasher ¶
Hasher wraps a hash.Hash to compute git object hashes.
func NewHasher ¶
func NewHasher(f format.ObjectFormat, t ObjectType, size int64) Hasher
NewHasher returns a new Hasher for the given object format, type and size.
func (Hasher) Reset ¶
func (h Hasher) Reset(t ObjectType, size int64)
Reset resets the hasher with a new object type and size.
type MemoryObject ¶
type MemoryObject struct {
// contains filtered or unexported fields
}
MemoryObject on memory Object implementation
func NewMemoryObject ¶
func NewMemoryObject(oh *ObjectHasher) *MemoryObject
NewMemoryObject returns a new MemoryObject with the given ObjectHasher.
func (*MemoryObject) Close ¶
func (o *MemoryObject) Close() error
Close releases any resources consumed by the object when it is acting as a ObjectWriter.
func (*MemoryObject) Hash ¶
func (o *MemoryObject) Hash() Hash
Hash returns the object Hash, the hash is calculated on-the-fly the first time it's called, in all subsequent calls the same Hash is returned even if the type or the content have changed. The Hash is only generated if the size of the content is exactly the object size.
func (*MemoryObject) Reader ¶
func (o *MemoryObject) Reader() (io.ReadCloser, error)
Reader returns an io.ReadCloser used to read the object's content.
For a MemoryObject, this reader is seekable.
func (*MemoryObject) SetSize ¶
func (o *MemoryObject) SetSize(s int64)
SetSize set the object size, a content of the given size should be written afterwards
func (*MemoryObject) SetType ¶
func (o *MemoryObject) SetType(t ObjectType)
SetType sets the ObjectType
func (*MemoryObject) Writer ¶
func (o *MemoryObject) Writer() (io.WriteCloser, error)
Writer returns a ObjectWriter used to write the object's content.
type ObjectHasher ¶
type ObjectHasher struct {
// contains filtered or unexported fields
}
ObjectHasher computes hashes for Git objects. A few differences it has when compared to Hasher:
- ObjectType awareness: produces either SHA1 or SHA256 hashes depending on the format needed.
- Thread-safety.
- API restricts ability of generating invalid hashes.
func FromHash ¶
func FromHash(h hash.Hash) (*ObjectHasher, error)
FromHash returns the correct ObjectHasher for the given Hash.
If the hash type is not recognised, an ErrUnsupportedHashFunction error is returned.
func FromObjectFormat ¶
func FromObjectFormat(f format.ObjectFormat) *ObjectHasher
FromObjectFormat returns a new ObjectHasher for the given ObjectFormat.
If the format is not recognised, defaults to SHA1.
func (*ObjectHasher) Compute ¶
func (h *ObjectHasher) Compute(ot ObjectType, d []byte) (ObjectID, error)
Compute computes the hash of the given data with the specified object type.
func (*ObjectHasher) Size ¶
func (h *ObjectHasher) Size() int
Size returns the size of the hash in bytes.
type ObjectID ¶
type ObjectID struct {
// contains filtered or unexported fields
}
ObjectID represents the ID of a Git object. The object data is kept in its hexadecimal form.
var ZeroHash ObjectID
ZeroHash is an ObjectID with value zero.
func FromBytes ¶
FromBytes creates an ObjectID based off its hex representation in bytes. The object format is inferred from the length of the input.
If the size of [in] does not match the supported object formats, an empty ObjectID will be returned.
func FromHex ¶
FromHex parses a hexadecimal string and returns an ObjectID and a boolean confirming whether the operation was successful. The object format is inferred from the length of the input.
For backwards compatibility, partial hashes will be handled as being SHA1.
func (ObjectID) HexSize ¶
HexSize returns the size for the hex representation of the current object.
func (*ObjectID) ReadFrom ¶
ReadFrom reads the raw bytes of the ObjectID from reader [r]. The number of bytes read is determined by the ObjectID's current size.
func (*ObjectID) ResetBySize ¶
ResetBySize resets the current ObjectID. It sets the underlying format based on the [idSize], which defaults to SHA1 for backwards compatibility.
This enable complete reuse of this object without needing to create a new instance of ObjectID.
type ObjectType ¶
type ObjectType int8
ObjectType internal object type Integer values from 0 to 7 map to those exposed by git. AnyObject is used to represent any from 0 to 7.
const ( // InvalidObject represents an invalid object type. InvalidObject ObjectType = 0 // CommitObject is a git commit object. CommitObject ObjectType = 1 // TreeObject is a git tree object. TreeObject ObjectType = 2 // BlobObject is a git blob object. BlobObject ObjectType = 3 // TagObject is a git tag object. TagObject ObjectType = 4 // OFSDeltaObject is an offset delta object type (5 reserved for future expansion). OFSDeltaObject ObjectType = 6 // REFDeltaObject is a reference delta object type. REFDeltaObject ObjectType = 7 // AnyObject is used to represent any object type. AnyObject ObjectType = -127 )
func ParseObjectType ¶
func ParseObjectType(value string) (typ ObjectType, err error)
ParseObjectType parses a string representation of ObjectType. It returns an error on parse failure.
func (ObjectType) Bytes ¶
func (t ObjectType) Bytes() []byte
Bytes returns the byte representation of the ObjectType.
func (ObjectType) IsDelta ¶
func (t ObjectType) IsDelta() bool
IsDelta returns true for any ObjectType that represents a delta (i.e. REFDeltaObject or OFSDeltaObject).
func (ObjectType) String ¶
func (t ObjectType) String() string
func (ObjectType) Valid ¶
func (t ObjectType) Valid() bool
Valid returns true if t is a valid ObjectType.
type PermanentError ¶
type PermanentError struct {
Err error
}
PermanentError represents an unrecoverable error.
func NewPermanentError ¶
func NewPermanentError(err error) *PermanentError
NewPermanentError returns a new PermanentError wrapping the given error.
func (*PermanentError) Error ¶
func (e *PermanentError) Error() string
type Reference ¶
type Reference struct {
// contains filtered or unexported fields
}
Reference is a representation of git reference
func NewHashReference ¶
func NewHashReference(n ReferenceName, h Hash) *Reference
NewHashReference creates a new HashReference reference
func NewReferenceFromStrings ¶
NewReferenceFromStrings creates a reference from name and target as string, the resulting reference can be a SymbolicReference or a HashReference base on the target provided
func NewSymbolicReference ¶
func NewSymbolicReference(n, target ReferenceName) *Reference
NewSymbolicReference creates a new SymbolicReference reference
func (*Reference) Name ¶
func (r *Reference) Name() ReferenceName
Name returns the name of a reference
func (*Reference) Target ¶
func (r *Reference) Target() ReferenceName
Target returns the target of a symbolic reference
func (*Reference) Type ¶
func (r *Reference) Type() ReferenceType
Type returns the type of a reference
type ReferenceName ¶
type ReferenceName string
ReferenceName reference name's
const ( // HEAD is the special reference pointing to the current branch. HEAD ReferenceName = "HEAD" // Master is the master branch reference. Master ReferenceName = "refs/heads/master" // Main is the main branch reference. Main ReferenceName = "refs/heads/main" // Invalid defines an invalid reference target which is used for specific // workflows on upstream Git. Invalid ReferenceName = "refs/heads/.invalid" )
func NewBranchReferenceName ¶
func NewBranchReferenceName(name string) ReferenceName
NewBranchReferenceName returns a reference name describing a branch based on his short name.
func NewNoteReferenceName ¶
func NewNoteReferenceName(name string) ReferenceName
NewNoteReferenceName returns a reference name describing a note based on his short name.
func NewRemoteHEADReferenceName ¶
func NewRemoteHEADReferenceName(remote string) ReferenceName
NewRemoteHEADReferenceName returns a reference name describing a the HEAD branch of a remote.
func NewRemoteReferenceName ¶
func NewRemoteReferenceName(remote, name string) ReferenceName
NewRemoteReferenceName returns a reference name describing a remote branch based on his short name and the remote name.
func NewTagReferenceName ¶
func NewTagReferenceName(name string) ReferenceName
NewTagReferenceName returns a reference name describing a tag based on short his name.
func (ReferenceName) IsBranch ¶
func (r ReferenceName) IsBranch() bool
IsBranch check if a reference is a branch
func (ReferenceName) IsNote ¶
func (r ReferenceName) IsNote() bool
IsNote check if a reference is a note
func (ReferenceName) IsPeeled ¶
func (r ReferenceName) IsPeeled() bool
IsPeeled returns true if the reference name ends with "^{}", indicating it is a peeled (dereferenced) tag. This is used in the Git protocol.
func (ReferenceName) IsRemote ¶
func (r ReferenceName) IsRemote() bool
IsRemote check if a reference is a remote
func (ReferenceName) IsRoot ¶
func (r ReferenceName) IsRoot() bool
IsRoot reports whether the reference name is one of the one-level references that legitimately live in the root of the reference store, next to refs/. It mirrors Git's is_root_ref (refs.c): the name must be spelled with [A-Z_-] only and must either end in "_HEAD" (ORIG_HEAD, FETCH_HEAD, MERGE_HEAD, CHERRY_PICK_HEAD, REBASE_HEAD, ...) or be one of the irregular names Git lists explicitly (HEAD, AUTO_MERGE, BISECT_EXPECTED_REV, NOTES_MERGE_PARTIAL, NOTES_MERGE_REF, MERGE_AUTOSTASH). Unlike Git's is_root_ref, FETCH_HEAD and MERGE_HEAD are included.
IsRoot reports false for every name under refs/, and is not a complete test on its own: its alphabet admits '-', so "SOME-THING_HEAD" satisfies IsRoot while IsSafe rejects it. Test IsSafe first, then accept the name if it is under refs/ or satisfies IsRoot.
https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs.c#L887-L938
func (ReferenceName) IsSafe ¶
func (r ReferenceName) IsSafe() bool
IsSafe reports whether the reference name can be safely turned into a path under the .git directory. It follows Git's refname_is_safe, but rejects backslashes on every platform; Git rejects them only on Windows. A name is safe when it is either:
- under "refs/", non-empty after the prefix, containing no backslash and no empty, "." or ".." path component (so it cannot escape the refs/ sub-tree, or alias another name, once turned into a path); or
- a one-level name whose spelling is restricted to [A-Z_] (e.g. HEAD, ORIG_HEAD, FETCH_HEAD).
Everything else — a lowercase or mixed one-level name such as "config" or "index", an absolute or drive-prefixed name, or a refs/ name that escapes — is unsafe.
IsSafe is not an allowlist of legitimate names, and does not on its own keep a name off unrelated repository metadata: its one-level arm admits any [A-Z_] spelling, "CONFIG" and "SHALLOW" included. A caller that creates or updates a reference must also require the name to be under refs/ or to satisfy IsRoot. This is a storage-safety check, not full check_refname_format validation; see Validate for the latter.
https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs.c#L382-L412 https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs/refs-internal.h#L57-L69
func (ReferenceName) IsTag ¶
func (r ReferenceName) IsTag() bool
IsTag check if a reference is a tag
func (ReferenceName) IsUnderRefs ¶
func (r ReferenceName) IsUnderRefs() bool
IsUnderRefs reports whether the name lives in the refs/ sub-tree, where every ordinary reference lives.
Four gates draw a line here and each drew it with its own copy of the string: the storer deciding what it will write, the receive-pack gate deciding what a push may name, and the two ends of the transport deciding what may be advertised and what an advertisement may carry. What each does with the answer differs — the transport keeps HEAD, the storer also takes a root ref, and a push takes neither — so this reports the fact and leaves the policy to them.
func (ReferenceName) Short ¶
func (r ReferenceName) Short() string
Short returns the short name of a ReferenceName
func (ReferenceName) String ¶
func (r ReferenceName) String() string
func (ReferenceName) Validate ¶
func (r ReferenceName) Validate() error
Validate validates a reference name. This follows the git-check-ref-format rules. See https://git-scm.com/docs/git-check-ref-format
It is important to note that this function does not check if the reference exists in the repository. It only checks if the reference name is valid. This functions does not support the --refspec-pattern, --normalize, and --allow-onelevel options.
Git imposes the following rules on how references are named:
- They can include slash / for hierarchical (directory) grouping, but no slash-separated component can begin with a dot . or end with the sequence .lock.
- They must contain at least one /. This enforces the presence of a category like heads/, tags/ etc. but the actual names are not restricted. If the --allow-onelevel option is used, this rule is waived.
- They cannot have two consecutive dots .. anywhere.
- They cannot have ASCII control characters (i.e. bytes whose values are lower than \040, or \177 DEL), space, tilde ~, caret ^, or colon : anywhere.
- They cannot have question-mark ?, asterisk *, or open bracket [ anywhere. See the --refspec-pattern option below for an exception to this rule.
- They cannot begin or end with a slash / or contain multiple consecutive slashes (see the --normalize option below for an exception to this rule).
- They cannot end with a dot ..
- They cannot contain a sequence @{.
- They cannot be the single character @.
- They cannot contain a \.
A leading "-" is not among them, and neither is a component spelled "@". Git restricts a leading "-" when a branch or a tag is created, in check_branch_ref and check_tag_ref rather than in check_refname_format; see ValidateBranchName and ValidateTagName.
https://github.com/git/git/blob/1630431f326e15fcde608827b5ff38422528eb59/refs.c#L191-L322
type ReferenceType ¶
type ReferenceType int8
ReferenceType reference type's
const ( // InvalidReference represents an invalid reference type. InvalidReference ReferenceType = 0 // HashReference represents a hash reference. HashReference ReferenceType = 1 // SymbolicReference represents a symbolic reference. SymbolicReference ReferenceType = 2 )
func (ReferenceType) String ¶
func (r ReferenceType) String() string
type Revision ¶
type Revision string
Revision represents a git revision to get more details about git revisions please check git manual page : https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html
type TagMode ¶
type TagMode int
TagMode defines how the tags will be fetched from the remote repository.
const ( InvalidTagMode TagMode = iota // TagFollowing any tag that points into the histories being fetched is also // fetched. TagFollowing requires a server with `include-tag` capability // in order to fetch the annotated tags objects. TagFollowing // AllTags fetch all tags from the remote (i.e., fetch remote tags // refs/tags/* into local tags with the same name) AllTags // NoTags fetch no tags from the remote at all NoTags )
Tag modes for fetching tags.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package cache implements different caching strategies for go-git objects and buffers.
|
Package cache implements different caching strategies for go-git objects and buffers. |
|
Package client provides a convenience Client that resolves URL schemes to transport implementations and provides Handshake/Connect methods.
|
Package client provides a convenience Client that resolves URL schemes to transport implementations and provides Handshake/Connect methods. |
|
Package color provides ANSI color codes for terminal output.
|
Package color provides ANSI color codes for terminal output. |
|
Package filemode provides types and utilities for working with git file modes.
|
Package filemode provides types and utilities for working with git file modes. |
|
format
|
|
|
commitgraph
Package commitgraph implements encoding and decoding of commit-graph files.
|
Package commitgraph implements encoding and decoding of commit-graph files. |
|
config
Package config implements encoding and decoding of git config files.
|
Package config implements encoding and decoding of git config files. |
|
diff
Package diff implements diff operations and unified diff encoding.
|
Package diff implements diff operations and unified diff encoding. |
|
gitattributes
Package gitattributes provides utilities for parsing and matching gitattributes files.
|
Package gitattributes provides utilities for parsing and matching gitattributes files. |
|
gitignore
Package gitignore implements matching file system paths to gitignore patterns that can be automatically read from a git repository tree in the order of definition priorities.
|
Package gitignore implements matching file system paths to gitignore patterns that can be automatically read from a git repository tree in the order of definition priorities. |
|
idxfile
Package idxfile implements encoding and decoding of packfile idx files.
|
Package idxfile implements encoding and decoding of packfile idx files. |
|
index
Package index implements encoding and decoding of index format files.
|
Package index implements encoding and decoding of index format files. |
|
objfile
Package objfile implements encoding and decoding of object files.
|
Package objfile implements encoding and decoding of object files. |
|
packfile
Package packfile implements encoding and decoding of packfile format.
|
Package packfile implements encoding and decoding of packfile format. |
|
packfile/util
Package util provides low-level helpers for packfile encoding and decoding.
|
Package util provides low-level helpers for packfile encoding and decoding. |
|
pktline
Package pktline implements reading and writing of pkt-line formatted data used in Git protocol communication.
|
Package pktline implements reading and writing of pkt-line formatted data used in Git protocol communication. |
|
reflog
Package reflog implements encoding and decoding of git reflog entries.
|
Package reflog implements encoding and decoding of git reflog entries. |
|
revfile
Package revfile implements encoding and decoding logic of reverse index files (RIDX).
|
Package revfile implements encoding and decoding logic of reverse index files (RIDX). |
|
Package hash provides a way for managing the underlying hash implementations used across go-git.
|
Package hash provides a way for managing the underlying hash implementations used across go-git. |
|
Package object contains implementations of all Git objects and utility functions to work with them.
|
Package object contains implementations of all Git objects and utility functions to work with them. |
|
commitgraph
Package commitgraph provides an interface for efficient traversal over Git commit graph either through the regular object storage, or optionally with the index stored in commit-graph file (Git 2.18+).
|
Package commitgraph provides an interface for efficient traversal over Git commit graph either through the regular object storage, or optionally with the index stored in commit-graph file (Git 2.18+). |
|
Package protocol provides types for the Git wire protocol.
|
Package protocol provides types for the Git wire protocol. |
|
capability
Package capability defines the server and client capabilities.
|
Package capability defines the server and client capabilities. |
|
packp
Package packp implements encoding and decoding of the Git packfile protocol messages.
|
Package packp implements encoding and decoding of the Git packfile protocol messages. |
|
packp/sideband
Package sideband implements a sideband multiplex/demultiplexer
|
Package sideband implements a sideband multiplex/demultiplexer |
|
Package revlist provides support to access the ancestors of commits, in a similar way as the git-rev-list command.
|
Package revlist provides support to access the ancestors of commits, in a similar way as the git-rev-list command. |
|
Package storer defines the interfaces to store objects, references, etc.
|
Package storer defines the interfaces to store objects, references, etc. |
|
Package transport implements the redesigned transport API for go-git.
|
Package transport implements the redesigned transport API for go-git. |
|
file
Package file implements the file transport for the new transport API.
|
Package file implements the file transport for the new transport API. |
|
git
Package git implements the Git TCP transport for the new transport API.
|
Package git implements the Git TCP transport for the new transport API. |
|
http
Package http implements the HTTP and HTTPS transport for the transport API.
|
Package http implements the HTTP and HTTPS transport for the transport API. |
|
ssh
Package ssh implements the SSH transport for the new transport API.
|
Package ssh implements the SSH transport for the new transport API. |
|
ssh/knownhosts
Package knownhosts is a thin wrapper around golang.org/x/crypto/ssh/knownhosts, adding the ability to obtain the list of host key algorithms for a known host.
|
Package knownhosts is a thin wrapper around golang.org/x/crypto/ssh/knownhosts, adding the ability to obtain the list of host key algorithms for a known host. |
|
ssh/sshagent
Package sshagent provides functionality to interact with the SSH agent.
|
Package sshagent provides functionality to interact with the SSH agent. |