Documentation ¶
Overview ¶
Package tools contains other helper functions too small to justify their own package NOTE: Subject to change, do not rely on this package from outside git-lfs source
Set is a modification of https://github.com/deckarep/golang-set The MIT License (MIT) Copyright (c) 2013 Ralph Caraveo (deckarep@gmail.com)
Index ¶
- Constants
- func CleanPaths(paths, delim string) (cleaned []string)
- func CloneFile(writer io.Writer, reader io.Reader) (bool, error)
- func CopyWithCallback(writer io.Writer, reader io.Reader, totalSize int64, cb progress.CopyCallback) (int64, error)
- func DirExists(path string) bool
- func FastWalkGitRepo(dir string) (<-chan FastWalkInfo, <-chan error)
- func FileExists(path string) bool
- func FileExistsOfSize(path string, sz int64) bool
- func FileMatch(pattern, name string) bool
- func FileOrDirExists(path string) (exists bool, isDir bool)
- func FilenamePassesIncludeExcludeFilter(filename string, includePaths, excludePaths []string) bool
- func MaxInt(a, b int) int
- func MinInt(a, b int) int
- func NewLfsContentHash() hash.Hash
- func NewReadSeekCloserWrapper(r io.ReadSeeker) io.ReadCloser
- func NewRetriableReader(r io.Reader) io.Reader
- func RenameFileCopyPermissions(srcfile, destfile string) error
- func ResolveSymlinks(path string) string
- func VerifyFileHash(oid, path string) error
- type FastWalkInfo
- type HashingReader
- type RetriableReader
- type StringSet
- func (set StringSet) Add(i string) bool
- func (set StringSet) Cardinality() int
- func (set *StringSet) Clear()
- func (set StringSet) Clone() StringSet
- func (set StringSet) Contains(i string) bool
- func (set StringSet) ContainsAll(i ...string) bool
- func (set StringSet) Difference(other StringSet) StringSet
- func (set StringSet) Equal(other StringSet) bool
- func (set StringSet) Intersect(other StringSet) StringSet
- func (set StringSet) IsSubset(other StringSet) bool
- func (set StringSet) IsSuperset(other StringSet) bool
- func (set StringSet) Iter() <-chan string
- func (set StringSet) Remove(i string)
- func (set StringSet) SymmetricDifference(other StringSet) StringSet
- func (set StringSet) Union(other StringSet) StringSet
Constants ¶
const (
BtrfsIocClone = C.BTRFS_IOC_CLONE
)
Variables ¶
This section is empty.
Functions ¶
func CleanPaths ¶
CleanPaths splits the given `paths` argument by the delimiter argument, and then "cleans" that path according to the path.Clean function (see https://golang.org/pkg/path#Clean). Note always cleans to '/' path separators regardless of platform (git friendly)
func CopyWithCallback ¶ added in v1.3.0
func CopyWithCallback(writer io.Writer, reader io.Reader, totalSize int64, cb progress.CopyCallback) (int64, error)
CopyWithCallback copies reader to writer while performing a progress callback
func FastWalkGitRepo ¶ added in v1.5.0
func FastWalkGitRepo(dir string) (<-chan FastWalkInfo, <-chan error)
FastWalkGitRepo is a more optimal implementation of filepath.Walk for a Git repo It differs in the following ways:
- Provides a channel of information instead of using a callback func
- Uses goroutines to parallelise large dirs and descent into subdirs
- Does not provide sorted output; parents will always be before children but there are no other guarantees. Use parentDir in the FastWalkInfo struct to determine absolute path rather than tracking it yourself like filepath.Walk
- Automatically ignores any .git directories
- Respects .gitignore contents and skips ignored files/dirs
func FileExists ¶ added in v1.3.0
FileExists determines if a file (NOT dir) exists.
func FileExistsOfSize ¶ added in v1.3.0
FileExistsOfSize determines if a file exists and is of a specific size.
func FileMatch ¶ added in v1.5.0
FileMatch is a revised version of filepath.Match which makes it behave more like gitignore
func FileOrDirExists ¶ added in v1.3.0
FileOrDirExists determines if a file/dir exists, returns IsDir() results too.
func FilenamePassesIncludeExcludeFilter ¶ added in v1.5.0
FilenamePassesIncludeExcludeFilter returns whether a given filename passes the include / exclude path filters Only paths that are in includePaths and outside excludePaths are passed If includePaths is empty that filter always passes and the same with excludePaths Both path lists support wildcard matches
func NewLfsContentHash ¶ added in v1.3.0
Get a new Hash instance of the type used to hash LFS content
func NewReadSeekCloserWrapper ¶ added in v1.3.0
func NewReadSeekCloserWrapper(r io.ReadSeeker) io.ReadCloser
NewReadSeekCloserWrapper wraps an io.ReadSeeker and implements a no-op Close() function to make it an io.ReadCloser
func RenameFileCopyPermissions ¶ added in v1.3.0
RenameFileCopyPermissions moves srcfile to destfile, replacing destfile if necessary and also copying the permissions of destfile if it already exists
func ResolveSymlinks ¶ added in v1.3.0
ResolveSymlinks ensures that if the path supplied is a symlink, it is resolved to the actual concrete path
func VerifyFileHash ¶ added in v1.3.0
VerifyFileHash reads a file and verifies whether the SHA is correct Returns an error if there is a problem
Types ¶
type FastWalkInfo ¶ added in v1.5.0
Returned from FastWalk with parent directory context This is needed because FastWalk can provide paths out of order so the parent dir cannot be implied
type HashingReader ¶ added in v1.3.0
type HashingReader struct {
// contains filtered or unexported fields
}
HashingReader wraps a reader and calculates the hash of the data as it is read
func NewHashingReader ¶ added in v1.3.0
func NewHashingReader(r io.Reader) *HashingReader
func NewHashingReaderPreloadHash ¶ added in v1.3.0
func NewHashingReaderPreloadHash(r io.Reader, hash hash.Hash) *HashingReader
func (*HashingReader) Hash ¶ added in v1.3.0
func (r *HashingReader) Hash() string
type RetriableReader ¶ added in v1.4.1
type RetriableReader struct {
// contains filtered or unexported fields
}
RetriableReader wraps a error response of reader as RetriableError()
type StringSet ¶ added in v1.3.0
type StringSet map[string]struct{}
The primary type that represents a set
func NewStringSet ¶ added in v1.3.0
func NewStringSet() StringSet
Creates and returns a reference to an empty set.
func NewStringSetFromSlice ¶ added in v1.3.0
Creates and returns a reference to a set from an existing slice
func NewStringSetWithCapacity ¶ added in v1.3.0
Creates and returns a reference to an empty set with a capacity.
func (StringSet) Add ¶ added in v1.3.0
Adds an item to the current set if it doesn't already exist in the set.
func (StringSet) Cardinality ¶ added in v1.3.0
Cardinality returns how many items are currently in the set.
func (*StringSet) Clear ¶ added in v1.3.0
func (set *StringSet) Clear()
Clears the entire set to be the empty set.
func (StringSet) Clone ¶ added in v1.3.0
Returns a clone of the set. Does NOT clone the underlying elements.
func (StringSet) ContainsAll ¶ added in v1.3.0
Determines if the given items are all in the set
func (StringSet) Difference ¶ added in v1.3.0
Returns a new set with items in the current set but not in the other set
func (StringSet) Equal ¶ added in v1.3.0
Equal determines if two sets are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.
func (StringSet) Intersect ¶ added in v1.3.0
Returns a new set with items that exist only in both sets.
func (StringSet) IsSubset ¶ added in v1.3.0
Determines if every item in the other set is in this set.
func (StringSet) IsSuperset ¶ added in v1.3.0
Determines if every item of this set is in the other set.
func (StringSet) Iter ¶ added in v1.3.0
Iter() returns a channel of type string that you can range over.
func (StringSet) SymmetricDifference ¶ added in v1.3.0
Returns a new set with items in the current set or the other set but not in both.