Documentation
¶
Index ¶
- Constants
- Variables
- func AddChanges(repoPath string, all bool, files ...string) error
- func AddChangesWithArgs(repoPath string, globalArgs []CmdArg, all bool, files ...string) error
- func AllCommitsCount(ctx context.Context, repoPath string, hidePRRefs bool, files ...string) (int64, error)
- func CheckGitVersionAtLeast(atLeast string) error
- func Clone(ctx context.Context, from, to string, opts CloneRepoOptions) error
- func CloneWithArgs(ctx context.Context, args []CmdArg, from, to string, opts CloneRepoOptions) (err error)
- func CommitChanges(repoPath string, opts CommitChangesOptions) error
- func CommitChangesWithArgs(repoPath string, args []CmdArg, opts CommitChangesOptions) error
- func CommitsCount(ctx context.Context, repoPath string, revision ...string) (int64, error)
- func CommitsCountFiles(ctx context.Context, repoPath string, revision, relpath []string) (int64, error)
- func CommonCmdServEnvs() []string
- func CommonGitCmdEnvs() []string
- func ConcatenateError(err error, stderr string) error
- func CutDiffAroundLine(originalDiff io.Reader, line int64, old bool, numbersOfLine int) (string, error)
- func EnsureValidGitRepository(ctx context.Context, repoPath string) error
- func Fsck(ctx context.Context, repoPath string, timeout time.Duration, args ...CmdArg) error
- func GetAffectedFiles(repo *Repository, oldCommitID, newCommitID string, env []string) ([]string, error)
- func GetDiffShortStat(ctx context.Context, repoPath string, args ...CmdArg) (numFiles, totalAdditions, totalDeletions int, err error)
- func GetFullCommitID(ctx context.Context, repoPath, shortID string) (string, error)
- func GetLastCommitForPaths(ctx context.Context, commit *Commit, treePath string, paths []string) (map[string]*Commit, error)
- func GetLatestCommitTime(ctx context.Context, repoPath string) (time.Time, error)
- func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error
- func GetRawDiff(repo *Repository, commitID string, diffType RawDiffType, writer io.Writer) error
- func GetRemoteAddress(ctx context.Context, repoPath, remoteName string) (string, error)
- func GetRemoteURL(ctx context.Context, repoPath, remoteName string) (*giturl.GitURL, error)
- func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diffType RawDiffType, ...) error
- func GetReverseRawDiff(ctx context.Context, repoPath, commitID string, writer io.Writer) error
- func HomeDir() string
- func InitFull(ctx context.Context) (err error)
- func InitRepository(ctx context.Context, repoPath string, bare bool) error
- func InitSimple(ctx context.Context) error
- func IsBranchExist(ctx context.Context, repoPath, name string) bool
- func IsErrBadLink(err error) bool
- func IsErrBranchNotExist(err error) bool
- func IsErrExecTimeout(err error) bool
- func IsErrMoreThanOne(err error) bool
- func IsErrNotExist(err error) bool
- func IsErrPushOutOfDate(err error) bool
- func IsErrPushRejected(err error) bool
- func IsErrUnsupportedVersion(err error) bool
- func IsReferenceExist(ctx context.Context, repoPath, name string) bool
- func IsRepoURLAccessible(ctx context.Context, url string) bool
- func IsTagExist(ctx context.Context, repoPath, name string) bool
- func IsValidHookName(name string) bool
- func IsValidRefPattern(name string) bool
- func IsValidSHAPattern(sha string) bool
- func LogNameStatusRepo(ctx context.Context, repository, head, treepath string, paths ...string) (*bufio.Reader, func())
- func ParseBool(value string) (result, valid bool)
- func ParseDiffHunkString(diffhunk string) (leftLine, leftHunk, rightLine, righHunk int)
- func ParseTreeLine(rd *bufio.Reader, modeBuf, fnameBuf, shaBuf []byte) (mode, fname, sha []byte, n int, err error)
- func Push(ctx context.Context, repoPath string, opts PushOptions) error
- func ReadBatchLine(rd *bufio.Reader) (sha []byte, typ string, size int64, err error)
- func ReadTagObjectID(rd *bufio.Reader, size int64) (string, error)
- func ReadTreeID(rd *bufio.Reader, size int64) (string, error)
- func RefEndName(refStr string) string
- func RefURL(repoURL, ref string) string
- func SanitizeRefPattern(name string) string
- func SetExecutablePath(path string) error
- func SetUpdateHook(repoPath, content string) (err error)
- func SplitRefName(refStr string) (string, string)
- func To40ByteSHA(sha, out []byte) []byte
- func VersionInfo() string
- func WalkGitLog(ctx context.Context, repo *Repository, head *Commit, treepath string, ...) (map[string]string, error)
- func WalkReferences(ctx context.Context, repoPath string, walkfn func(sha1, refname string) error) (int, error)
- func WriteCommitGraph(ctx context.Context, repoPath string) error
- type ArchiveType
- type BlamePart
- type BlameReader
- type Blob
- func (b *Blob) DataAsync() (io.ReadCloser, error)
- func (b *Blob) GetBlobContent() (string, error)
- func (b *Blob) GetBlobContentBase64() (string, error)
- func (b *Blob) GetBlobLineCount() (int, error)
- func (b *Blob) GuessContentType() (typesniffer.SniffedType, error)
- func (b *Blob) Name() string
- func (b *Blob) Size() int64
- type Branch
- type Cache
- type CheckAttributeOpts
- type CheckAttributeReader
- type CloneRepoOptions
- type CmdArg
- type CodeActivityAuthor
- type CodeActivityStats
- type Command
- func (c *Command) AddArguments(args ...CmdArg) *Command
- func (c *Command) AddDashesAndList(list ...string) *Command
- func (c *Command) AddDynamicArguments(args ...string) *Command
- func (c *Command) Run(opts *RunOpts) error
- func (c *Command) RunStdBytes(opts *RunOpts) (stdout, stderr []byte, runErr RunStdError)
- func (c *Command) RunStdString(opts *RunOpts) (stdout, stderr string, runErr RunStdError)
- func (c *Command) SetDescription(desc string) *Command
- func (c *Command) SetParentContext(ctx context.Context) *Command
- func (c *Command) String() string
- type Commit
- func (c *Commit) CacheCommit(ctx context.Context) error
- func (c *Commit) CommitsBefore() ([]*Commit, error)
- func (c *Commit) CommitsBeforeLimit(num int) ([]*Commit, error)
- func (c *Commit) CommitsBeforeUntil(commitID string) ([]*Commit, error)
- func (c *Commit) CommitsByRange(page, pageSize int) ([]*Commit, error)
- func (c *Commit) CommitsCount() (int64, error)
- func (c *Commit) FileChangedSinceCommit(filename, pastCommit string) (bool, error)
- func (c *Commit) GetBranchName() (string, error)
- func (c *Commit) GetCommitByPath(relpath string) (*Commit, error)
- func (c *Commit) GetFileContent(filename string, limit int) (string, error)
- func (c *Commit) GetFilesChangedSinceCommit(pastCommit string) ([]string, error)
- func (c *Commit) GetRepositoryDefaultPublicGPGKey(forceUpdate bool) (*GPGSettings, error)
- func (c *Commit) GetSubModule(entryname string) (*SubModule, error)
- func (c *Commit) GetSubModules() (*ObjectCache, error)
- func (c *Commit) GetTagName() (string, error)
- func (c *Commit) HasFile(filename string) (bool, error)
- func (c *Commit) HasPreviousCommit(commitHash SHA1) (bool, error)
- func (c *Commit) LoadBranchName() (err error)
- func (c *Commit) Message() string
- func (c *Commit) Parent(n int) (*Commit, error)
- func (c *Commit) ParentCount() int
- func (c *Commit) ParentID(n int) (SHA1, error)
- func (c *Commit) SearchCommits(opts SearchCommitsOptions) ([]*Commit, error)
- func (c *Commit) Summary() string
- type CommitChangesOptions
- type CommitFileStatus
- type CommitGPGSignature
- type CommitInfo
- type CommitTreeOpts
- type CompareInfo
- type DeleteBranchOptions
- type DivergeObject
- type Entries
- type EntryMode
- type ErrBadLink
- type ErrBranchNotExist
- type ErrExecTimeout
- type ErrMoreThanOne
- type ErrNotExist
- type ErrPushOutOfDate
- type ErrPushRejected
- type ErrUnsupportedVersion
- type GPGSettings
- type Hasher
- type Hook
- type LastCommitCache
- type LimitedReaderCloser
- type LogNameStatusCommitData
- type LogNameStatusRepoParser
- type Note
- type ObjectCache
- type ObjectType
- type PushOptions
- type RawDiffType
- type RefName
- type Reference
- type Repository
- func (repo *Repository) AddLastCommitCache(cacheKey, fullName, sha string) error
- func (repo *Repository) AddObjectToIndex(mode string, object SHA1, filename string) error
- func (repo *Repository) AddRemote(name, url string, fetch bool) error
- func (repo *Repository) CatFileBatch(ctx context.Context) (WriteCloserError, *bufio.Reader, func())
- func (repo *Repository) CatFileBatchCheck(ctx context.Context) (WriteCloserError, *bufio.Reader, func())
- func (repo *Repository) CheckAttribute(opts CheckAttributeOpts) (map[string]map[string]string, error)
- func (repo *Repository) CheckAttributeReader(commitID string) (*CheckAttributeReader, context.CancelFunc)
- func (repo *Repository) Close() (err error)
- func (repo *Repository) CommitTree(author, committer *Signature, tree *Tree, opts CommitTreeOpts) (SHA1, error)
- func (repo *Repository) CommitsBetween(last, before *Commit) ([]*Commit, error)
- func (repo *Repository) CommitsBetweenIDs(last, before string) ([]*Commit, error)
- func (repo *Repository) CommitsBetweenLimit(last, before *Commit, limit, skip int) ([]*Commit, error)
- func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) ([]*Commit, error)
- func (repo *Repository) CommitsCountBetween(start, end string) (int64, error)
- func (repo *Repository) ConvertToSHA1(commitID string) (SHA1, error)
- func (repo *Repository) CreateAnnotatedTag(name, message, revision string) error
- func (repo *Repository) CreateArchive(ctx context.Context, format ArchiveType, target io.Writer, usePrefix bool, ...) error
- func (repo *Repository) CreateBranch(branch, oldbranchOrCommit string) error
- func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.Writer) error
- func (repo *Repository) CreateTag(name, revision string) error
- func (repo *Repository) DeleteBranch(name string, opts DeleteBranchOptions) error
- func (repo *Repository) EmptyIndex() error
- func (repo *Repository) FileBlame(revision, path, file string) ([]byte, error)
- func (repo *Repository) FileChangedBetweenCommits(filename, id1, id2 string) (bool, error)
- func (repo *Repository) FileCommitsCount(revision, file string) (int64, error)
- func (repo *Repository) FilesCountBetween(startCommitID, endCommitID string) (int, error)
- func (repo *Repository) GetAllCommitsCount() (int64, error)
- func (repo *Repository) GetAnnotatedTag(sha string) (*Tag, error)
- func (repo *Repository) GetBlob(idStr string) (*Blob, error)
- func (repo *Repository) GetBranch(branch string) (*Branch, error)
- func (repo *Repository) GetBranchCommit(name string) (*Commit, error)
- func (repo *Repository) GetBranchCommitID(name string) (string, error)
- func (repo *Repository) GetBranchNames(skip, limit int) ([]string, int, error)
- func (repo *Repository) GetBranches(skip, limit int) ([]*Branch, int, error)
- func (repo *Repository) GetCodeActivityStats(fromTime time.Time, branch string) (*CodeActivityStats, error)
- func (repo *Repository) GetCommit(commitID string) (*Commit, error)
- func (repo *Repository) GetCommitByPath(relpath string) (*Commit, error)
- func (repo *Repository) GetCommitsFromIDs(commitIDs []string) []*Commit
- func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string, directComparison, fileOnly bool) (_ *CompareInfo, err error)
- func (repo *Repository) GetDefaultBranch() (string, error)
- func (repo *Repository) GetDefaultPublicGPGKey(forceUpdate bool) (*GPGSettings, error)
- func (repo *Repository) GetDiff(base, head string, w io.Writer) error
- func (repo *Repository) GetDiffBinary(base, head string, w io.Writer) error
- func (repo *Repository) GetDiffFromMergeBase(base, head string, w io.Writer) error
- func (repo *Repository) GetDiffNumChangedFiles(base, head string, directComparison bool) (int, error)
- func (repo *Repository) GetDiffOrPatch(base, head string, w io.Writer, patch, binary bool) error
- func (repo *Repository) GetDiffShortStat(base, head string) (numFiles, totalAdditions, totalDeletions int, err error)
- func (repo *Repository) GetFilesChangedBetween(base, head string) ([]string, error)
- func (repo *Repository) GetHEADBranch() (*Branch, error)
- func (repo *Repository) GetHook(name string) (*Hook, error)
- func (repo *Repository) GetLanguageStats(commitID string) (map[string]int64, error)
- func (repo *Repository) GetMergeBase(tmpRemote, base, head string) (string, string, error)
- func (repo *Repository) GetPatch(base, head string, w io.Writer) error
- func (repo *Repository) GetRefCommitID(name string) (string, error)
- func (repo *Repository) GetRefType(ref string) ObjectType
- func (repo *Repository) GetRefs() ([]*Reference, error)
- func (repo *Repository) GetRefsBySha(sha, prefix string) ([]string, error)
- func (repo *Repository) GetRefsFiltered(pattern string) ([]*Reference, error)
- func (repo *Repository) GetTag(name string) (*Tag, error)
- func (repo *Repository) GetTagCommit(name string) (*Commit, error)
- func (repo *Repository) GetTagCommitID(name string) (string, error)
- func (repo *Repository) GetTagID(name string) (string, error)
- func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error)
- func (repo *Repository) GetTagNameBySHA(sha string) (string, error)
- func (repo *Repository) GetTagType(id SHA1) (string, error)
- func (repo *Repository) GetTagWithID(idStr, name string) (*Tag, error)
- func (repo *Repository) GetTags(skip, limit int) (tags []string, err error)
- func (repo *Repository) GetTree(idStr string) (*Tree, error)
- func (repo *Repository) HashObject(reader io.Reader) (SHA1, error)
- func (repo *Repository) Hooks() ([]*Hook, error)
- func (repo *Repository) IsBranchExist(name string) bool
- func (repo *Repository) IsCommitExist(name string) bool
- func (repo *Repository) IsCommitInBranch(commitID, branch string) (r bool, err error)
- func (repo *Repository) IsEmpty() (bool, error)
- func (repo *Repository) IsObjectExist(name string) bool
- func (repo *Repository) IsReferenceExist(name string) bool
- func (repo *Repository) IsTagExist(name string) bool
- func (repo *Repository) LineBlame(revision, path, file string, line uint) (*Commit, error)
- func (repo *Repository) LsFiles(filenames ...string) ([]string, error)
- func (repo *Repository) LsTree(ref string, filenames ...string) ([]string, error)
- func (repo *Repository) ReadPatchCommit(prID int64) (commitSHA string, err error)
- func (repo *Repository) ReadTreeToIndex(treeish string, indexFilename ...string) error
- func (repo *Repository) ReadTreeToTemporaryIndex(treeish string) (filename, tmpDir string, cancel context.CancelFunc, err error)
- func (repo *Repository) RemoveFilesFromIndex(filenames ...string) error
- func (repo *Repository) RemoveReference(name string) error
- func (repo *Repository) RemoveRemote(name string) error
- func (repo *Repository) RenameBranch(from, to string) error
- func (repo *Repository) ResolveReference(name string) (string, error)
- func (repo *Repository) SetDefaultBranch(name string) error
- func (repo *Repository) SetReference(name, commitID string) error
- func (repo *Repository) WalkReferences(refType ObjectType, skip, limit int, walkfn func(sha1, refname string) error) (int, error)
- func (repo *Repository) WriteTree() (*Tree, error)
- type RunOpts
- type RunStdError
- type SHA1
- type SearchCommitsOptions
- type Signature
- type SubModule
- type SubModuleFile
- type Tag
- type Tree
- func (t *Tree) GetBlobByPath(relpath string) (*Blob, error)
- func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error)
- func (t *Tree) ListEntries() (Entries, error)
- func (t *Tree) ListEntriesRecursiveFast() (Entries, error)
- func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error)
- func (t *Tree) SubTree(rpath string) (*Tree, error)
- type TreeEntry
- func (te *TreeEntry) Blob() *Blob
- func (te *TreeEntry) FollowLink() (*TreeEntry, error)
- func (te *TreeEntry) FollowLinks() (*TreeEntry, error)
- func (te *TreeEntry) GetSubJumpablePathName() string
- func (te *TreeEntry) IsDir() bool
- func (te *TreeEntry) IsExecutable() bool
- func (te *TreeEntry) IsLink() bool
- func (te *TreeEntry) IsRegular() bool
- func (te *TreeEntry) IsSubModule() bool
- func (te *TreeEntry) Mode() EntryMode
- func (te *TreeEntry) Name() string
- func (te *TreeEntry) Size() int64
- func (te *TreeEntry) Type() string
- type WriteCloserError
Examples ¶
Constants ¶
const (
// RemotePrefix is the base directory of the remotes information of git.
RemotePrefix = "refs/remotes/"
// PullPrefix is the base directory of the pull information of git.
PullPrefix = "refs/pull/"
)
const BranchPrefix = "refs/heads/"
BranchPrefix base dir of the branch information file store on git
const DefaultLocale = "C"
DefaultLocale is the default LC_ALL to run git commands in.
const EmptySHA = "0000000000000000000000000000000000000000"
EmptySHA defines empty git SHA
const EmptyTreeSHA = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
EmptyTreeSHA is the SHA of an empty tree
const (
// GitTimeLayout is the (default) time layout used by git.
GitTimeLayout = "Mon Jan _2 15:04:05 2006 -0700"
)
const (
// HookPathUpdate hook update path
HookPathUpdate = "hooks/update"
)
const NotesRef = "refs/notes/commits"
NotesRef is the git ref where Gitea will look for git-notes data. The value ("refs/notes/commits") is the default ref used by git-notes.
const PullRequestPrefix = "refs/for/"
PullRequestPrefix special ref to create a pull request: refs/for/<targe-branch>/<topic-branch> or refs/for/<targe-branch> -o topic='<topic-branch>'
const RequiredVersion = "2.0.0"
RequiredVersion is the minimum Git version required
const TagPrefix = "refs/tags/"
TagPrefix tags prefix path on the repository
Variables ¶
var (
// GitExecutable is the command name of git
// Could be updated to an absolute path while initialization
GitExecutable = "git"
// DefaultContext is the default context to run git commands in, must be initialized by git.InitXxx
DefaultContext context.Context
// SupportProcReceive version >= 2.29.0
SupportProcReceive bool
)
var ErrBrokenCommand = errors.New("git command is broken")
var ErrNotValidHook = errors.New("not a valid Git hook")
ErrNotValidHook error when a git hook is not valid
var RepositoryContextKey = &contextKey{"repository"}
RepositoryContextKey is a context key. It is used with context.Value() to get the current Repository for the context
Functions ¶
func AddChanges ¶
func AddChanges(repoPath string, all bool, files ...string) error
AddChanges marks local changes to be ready for commit.
func AddChangesWithArgs ¶ added in v1.11.0
func AddChangesWithArgs(repoPath string, globalArgs []CmdArg, all bool, files ...string) error
AddChangesWithArgs marks local changes to be ready for commit.
func AllCommitsCount ¶ added in v1.11.0
func AllCommitsCount(ctx context.Context, repoPath string, hidePRRefs bool, files ...string) (int64, error)
AllCommitsCount returns count of all commits in repository
func CheckGitVersionAtLeast ¶ added in v1.14.0
func CheckGitVersionAtLeast(atLeast string) error
CheckGitVersionAtLeast check git version is at least the constraint version
func Clone ¶
func Clone(ctx context.Context, from, to string, opts CloneRepoOptions) error
Clone clones original repository to target path.
func CloneWithArgs ¶ added in v1.11.0
func CloneWithArgs(ctx context.Context, args []CmdArg, from, to string, opts CloneRepoOptions) (err error)
CloneWithArgs original repository to target path.
func CommitChanges ¶
func CommitChanges(repoPath string, opts CommitChangesOptions) error
CommitChanges commits local changes with given committer, author and message. If author is nil, it will be the same as committer.
func CommitChangesWithArgs ¶ added in v1.11.0
func CommitChangesWithArgs(repoPath string, args []CmdArg, opts CommitChangesOptions) error
CommitChangesWithArgs commits local changes with given committer, author and message. If author is nil, it will be the same as committer.
func CommitsCount ¶
func CommitsCount(ctx context.Context, repoPath string, revision ...string) (int64, error)
CommitsCount returns number of total commits of until given revision.
func CommitsCountFiles ¶ added in v1.14.0
func CommitsCountFiles(ctx context.Context, repoPath string, revision, relpath []string) (int64, error)
CommitsCountFiles returns number of total commits of until given revision.
func CommonCmdServEnvs ¶ added in v1.17.0
func CommonCmdServEnvs() []string
CommonCmdServEnvs is like CommonGitCmdEnvs, but it only returns minimal required environment variables for the "gitea serv" command
func CommonGitCmdEnvs ¶ added in v1.17.0
func CommonGitCmdEnvs() []string
CommonGitCmdEnvs returns the common environment variables for a "git" command.
func ConcatenateError ¶ added in v1.14.0
func ConcatenateError(err error, stderr string) error
ConcatenateError concatenats an error with stderr string
func CutDiffAroundLine ¶ added in v1.12.0
func CutDiffAroundLine(originalDiff io.Reader, line int64, old bool, numbersOfLine int) (string, error)
CutDiffAroundLine cuts a diff of a file in way that only the given line + numberOfLine above it will be shown it also recalculates hunks and adds the appropriate headers to the new diff. Warning: Only one-file diffs are allowed.
Example ¶
Output:
func EnsureValidGitRepository ¶ added in v1.15.8
func EnsureValidGitRepository(ctx context.Context, repoPath string) error
EnsureValidGitRepository runs git rev-parse in the repository path - thus ensuring that the repository is a valid repository. Run before opening git cat-file. This is needed otherwise the git cat-file will hang for invalid repositories.
func Fsck ¶
func Fsck(ctx context.Context, repoPath string, timeout time.Duration, args ...CmdArg) error
Fsck verifies the connectivity and validity of the objects in the database
func GetAffectedFiles ¶ added in v1.16.0
func GetAffectedFiles(repo *Repository, oldCommitID, newCommitID string, env []string) ([]string, error)
GetAffectedFiles returns the affected files between two commits
func GetDiffShortStat ¶ added in v1.13.0
func GetDiffShortStat(ctx context.Context, repoPath string, args ...CmdArg) (numFiles, totalAdditions, totalDeletions int, err error)
GetDiffShortStat counts number of changed files, number of additions and deletions
func GetFullCommitID ¶
func GetFullCommitID(ctx context.Context, repoPath, shortID string) (string, error)
GetFullCommitID returns full length (40) of commit ID by given short SHA in a repository.
func GetLastCommitForPaths ¶ added in v1.13.0
func GetLastCommitForPaths(ctx context.Context, commit *Commit, treePath string, paths []string) (map[string]*Commit, error)
GetLastCommitForPaths returns last commit information
func GetLatestCommitTime ¶
func GetLatestCommitTime(ctx context.Context, repoPath string) (time.Time, error)
GetLatestCommitTime returns time for latest commit in repository (across all branches)
func GetNote ¶
func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error
GetNote retrieves the git-notes data for a given commit. FIXME: Add LastCommitCache support
func GetRawDiff ¶ added in v1.12.0
func GetRawDiff(repo *Repository, commitID string, diffType RawDiffType, writer io.Writer) error
GetRawDiff dumps diff results of repository in given commit ID to io.Writer.
func GetRemoteAddress ¶ added in v1.15.0
func GetRemoteAddress(ctx context.Context, repoPath, remoteName string) (string, error)
GetRemoteAddress returns remote url of git repository in the repoPath with special remote name
func GetRemoteURL ¶ added in v1.17.0
func GetRemoteURL(ctx context.Context, repoPath, remoteName string) (*giturl.GitURL, error)
GetRemoteURL returns the url of a specific remote of the repository.
func GetRepoRawDiffForFile ¶ added in v1.12.0
func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diffType RawDiffType, file string, writer io.Writer) error
GetRepoRawDiffForFile dumps diff results of file in given commit ID to io.Writer according given repository
func GetReverseRawDiff ¶ added in v1.17.0
func GetReverseRawDiff(ctx context.Context, repoPath, commitID string, writer io.Writer) error
GetReverseRawDiff dumps the reverse diff results of repository in given commit ID to io.Writer.
func HomeDir ¶ added in v1.17.0
func HomeDir() string
HomeDir is the home dir for git to store the global config file used by Gitea internally
func InitFull ¶ added in v1.17.4
func InitFull(ctx context.Context) (err error)
InitFull initializes git module with version check and change global variables, sync gitconfig. It should only be called once at the beginning of the program initialization (TestMain/GlobalInitInstalled) as this code makes unsynchronized changes to variables.
func InitRepository ¶
func InitRepository(ctx context.Context, repoPath string, bare bool) error
InitRepository initializes a new Git repository.
func InitSimple ¶ added in v1.17.0
func InitSimple(ctx context.Context) error
InitSimple initializes git module with a very simple step, no config changes, no global command arguments. This method doesn't change anything to filesystem. At the moment, it is only used by some Gitea sub-commands.
func IsBranchExist ¶
func IsBranchExist(ctx context.Context, repoPath, name string) bool
IsBranchExist returns true if given branch exists in the repository.
func IsErrBadLink ¶ added in v1.12.0
func IsErrBadLink(err error) bool
IsErrBadLink if some error is ErrBadLink
func IsErrBranchNotExist ¶
func IsErrBranchNotExist(err error) bool
IsErrBranchNotExist checks if an error is a ErrBranchNotExist.
func IsErrExecTimeout ¶
func IsErrExecTimeout(err error) bool
IsErrExecTimeout if some error is ErrExecTimeout
func IsErrMoreThanOne ¶ added in v1.15.0
func IsErrMoreThanOne(err error) bool
IsErrMoreThanOne checks if an error is a ErrMoreThanOne
func IsErrPushOutOfDate ¶ added in v1.12.0
func IsErrPushOutOfDate(err error) bool
IsErrPushOutOfDate checks if an error is a ErrPushOutOfDate.
func IsErrPushRejected ¶ added in v1.12.0
func IsErrPushRejected(err error) bool
IsErrPushRejected checks if an error is a ErrPushRejected.
func IsErrUnsupportedVersion ¶
func IsErrUnsupportedVersion(err error) bool
IsErrUnsupportedVersion if some error is ErrUnsupportedVersion
func IsReferenceExist ¶
func IsReferenceExist(ctx context.Context, repoPath, name string) bool
IsReferenceExist returns true if given reference exists in the repository.
func IsRepoURLAccessible ¶
func IsRepoURLAccessible(ctx context.Context, url string) bool
IsRepoURLAccessible checks if given repository URL is accessible.
func IsTagExist ¶
func IsTagExist(ctx context.Context, repoPath, name string) bool
IsTagExist returns true if given tag exists in the repository.
func IsValidHookName ¶
func IsValidHookName(name string) bool
IsValidHookName returns true if given name is a valid Git hook.
func IsValidRefPattern ¶ added in v1.17.2
func IsValidRefPattern(name string) bool
IsValidRefPattern ensures that the provided string could be a valid reference
func IsValidSHAPattern ¶ added in v1.17.2
func IsValidSHAPattern(sha string) bool
IsValidSHAPattern will check if the provided string matches the SHA Pattern
func LogNameStatusRepo ¶ added in v1.15.0
func LogNameStatusRepo(ctx context.Context, repository, head, treepath string, paths ...string) (*bufio.Reader, func())
LogNameStatusRepo opens git log --raw in the provided repo and returns a stdin pipe, a stdout reader and cancel function
func ParseBool ¶ added in v1.11.0
func ParseBool(value string) (result, valid bool)
ParseBool returns the boolean value represented by the string as per git's git_config_bool true will be returned for the result if the string is empty, but valid will be false. "true", "yes", "on" are all true, true "false", "no", "off" are all false, true 0 is false, true Any other integer is true, true Anything else will return false, false
func ParseDiffHunkString ¶ added in v1.12.0
func ParseDiffHunkString(diffhunk string) (leftLine, leftHunk, rightLine, righHunk int)
ParseDiffHunkString parse the diffhunk content and return
func ParseTreeLine ¶ added in v1.14.0
func ParseTreeLine(rd *bufio.Reader, modeBuf, fnameBuf, shaBuf []byte) (mode, fname, sha []byte, n int, err error)
ParseTreeLine reads an entry from a tree in a cat-file --batch stream This carefully avoids allocations - except where fnameBuf is too small. It is recommended therefore to pass in an fnameBuf large enough to avoid almost all allocations
Each line is composed of: <mode-in-ascii-dropping-initial-zeros> SP <fname> NUL <20-byte SHA>
We don't attempt to convert the 20-byte SHA to 40-byte SHA to save a lot of time
func Push ¶
func Push(ctx context.Context, repoPath string, opts PushOptions) error
Push pushs local commits to given remote branch.
func ReadBatchLine ¶ added in v1.14.0
func ReadBatchLine(rd *bufio.Reader) (sha []byte, typ string, size int64, err error)
ReadBatchLine reads the header line from cat-file --batch We expect: <sha> SP <type> SP <size> LF sha is a 40byte not 20byte here
func ReadTagObjectID ¶ added in v1.14.0
func ReadTagObjectID(rd *bufio.Reader, size int64) (string, error)
ReadTagObjectID reads a tag object ID hash from a cat-file --batch stream, throwing away the rest of the stream.
func ReadTreeID ¶ added in v1.14.0
func ReadTreeID(rd *bufio.Reader, size int64) (string, error)
ReadTreeID reads a tree ID from a cat-file --batch stream, throwing away the rest of the stream.
func RefEndName ¶
func RefEndName(refStr string) string
RefEndName return the end name of a ref name
func RefURL ¶ added in v1.12.0
func RefURL(repoURL, ref string) string
RefURL returns the absolute URL for a ref in a repository
func SanitizeRefPattern ¶ added in v1.17.2
func SanitizeRefPattern(name string) string
func SetExecutablePath ¶ added in v1.10.0
func SetExecutablePath(path string) error
SetExecutablePath changes the path of git executable and checks the file permission and version.
func SetUpdateHook ¶
func SetUpdateHook(repoPath, content string) (err error)
SetUpdateHook writes given content to update hook of the repository.
func SplitRefName ¶ added in v1.11.0
func SplitRefName(refStr string) (string, string)
SplitRefName splits a full refname to reftype and simple refname
func To40ByteSHA ¶ added in v1.14.2
func To40ByteSHA(sha, out []byte) []byte
To40ByteSHA converts a 20-byte SHA into a 40-byte sha. Input and output can be the same 40 byte slice to support in place conversion without allocations. This is at least 100x quicker that hex.EncodeToString NB This requires that out is a 40-byte slice
func VersionInfo ¶ added in v1.15.0
func VersionInfo() string
VersionInfo returns git version information
func WalkGitLog ¶ added in v1.15.0
func WalkGitLog(ctx context.Context, repo *Repository, head *Commit, treepath string, paths ...string) (map[string]string, error)
WalkGitLog walks the git log --name-status for the head commit in the provided treepath and files
func WalkReferences ¶ added in v1.16.0
func WalkReferences(ctx context.Context, repoPath string, walkfn func(sha1, refname string) error) (int, error)
WalkReferences walks all the references from the repository
func WriteCommitGraph ¶ added in v1.16.6
func WriteCommitGraph(ctx context.Context, repoPath string) error
WriteCommitGraph write commit graph to speed up repo access this requires git v2.18 to be installed
Types ¶
type ArchiveType ¶
type ArchiveType int
ArchiveType archive types
const (
// ZIP zip archive type
ZIP ArchiveType = iota + 1
// TARGZ tar gz archive type
TARGZ
// BUNDLE bundle archive type
BUNDLE
)
func ToArchiveType ¶ added in v1.17.4
func ToArchiveType(s string) ArchiveType
type BlamePart ¶
type BlamePart struct {
Sha string
Lines []string
}
BlamePart represents block of blame - continuous lines with one sha
type BlameReader ¶
type BlameReader struct {
// contains filtered or unexported fields
}
BlameReader returns part of file blame one by one
func CreateBlameReader ¶
func CreateBlameReader(ctx context.Context, repoPath, commitID, file string) (*BlameReader, error)
CreateBlameReader creates reader for given repository, commit and file
type Blob ¶
type Blob struct {
ID SHA1
// contains filtered or unexported fields
}
Blob represents a Git object.
func (*Blob) DataAsync ¶
func (b *Blob) DataAsync() (io.ReadCloser, error)
DataAsync gets a ReadCloser for the contents of a blob without reading it all. Calling the Close function on the result will discard all unread output.
func (*Blob) GetBlobContent ¶
func (b *Blob) GetBlobContent() (string, error)
GetBlobContent Gets the content of the blob as raw text
func (*Blob) GetBlobContentBase64 ¶
func (b *Blob) GetBlobContentBase64() (string, error)
GetBlobContentBase64 Reads the content of the blob with a base64 encode and returns the encoded string
func (*Blob) GetBlobLineCount ¶ added in v1.11.0
func (b *Blob) GetBlobLineCount() (int, error)
GetBlobLineCount gets line count of the blob
func (*Blob) GuessContentType ¶ added in v1.15.0
func (b *Blob) GuessContentType() (typesniffer.SniffedType, error)
GuessContentType guesses the content type of the blob.
type Branch ¶
type Branch struct {
Name string
Path string
// contains filtered or unexported fields
}
Branch represents a Git branch.
func GetBranchesByPath ¶
func GetBranchesByPath(ctx context.Context, path string, skip, limit int) ([]*Branch, int, error)
GetBranchesByPath returns a branch by it's path if limit = 0 it will not limit
type Cache ¶ added in v1.14.0
type Cache interface {
// Put puts value into cache with key and expire time.
Put(key string, val interface{}, timeout int64) error
// Get gets cached value by given key.
Get(key string) interface{}
}
Cache represents a caching interface
type CheckAttributeOpts ¶ added in v1.11.0
type CheckAttributeOpts struct {
CachedOnly bool
AllAttributes bool
Attributes []CmdArg
Filenames []string
IndexFile string
WorkTree string
}
CheckAttributeOpts represents the possible options to CheckAttribute
type CheckAttributeReader ¶ added in v1.16.0
type CheckAttributeReader struct {
// params
Attributes []CmdArg
Repo *Repository
IndexFile string
WorkTree string
// contains filtered or unexported fields
}
CheckAttributeReader provides a reader for check-attribute content that can be long running
func (*CheckAttributeReader) CheckPath ¶ added in v1.16.0
func (c *CheckAttributeReader) CheckPath(path string) (rs map[string]string, err error)
CheckPath check attr for given path
func (*CheckAttributeReader) Close ¶ added in v1.16.0
func (c *CheckAttributeReader) Close() error
Close close pip after use
type CloneRepoOptions ¶
type CloneRepoOptions struct {
Timeout time.Duration
Mirror bool
Bare bool
Quiet bool
Branch string
Shared bool
NoCheckout bool
Depth int
Filter string
SkipTLSVerify bool
}
CloneRepoOptions options when clone a repository
type CmdArg ¶ added in v1.17.4
type CmdArg string
func AllowLFSFiltersArgs ¶ added in v1.17.0
func AllowLFSFiltersArgs() []CmdArg
AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests
func CmdArgCheck ¶ added in v1.17.4
func CmdArgCheck(s string) CmdArg
CmdArgCheck checks whether the string is safe to be used as a dynamic argument. It panics if the check fails. Usually it should not be used, it's just for refactoring purpose deprecated
type CodeActivityAuthor ¶ added in v1.12.0
type CodeActivityAuthor struct {
Name string
Email string
Commits int64
}
CodeActivityAuthor represents git statistics data for commit authors
type CodeActivityStats ¶
type CodeActivityStats struct {
AuthorCount int64
CommitCount int64
ChangedFiles int64
Additions int64
Deletions int64
CommitCountInAllBranches int64
Authors []*CodeActivityAuthor
}
CodeActivityStats represents git statistics data
type Command ¶
type Command struct {
// contains filtered or unexported fields
}
Command represents a command with its subcommands or arguments.
func NewCommand ¶
func NewCommand(ctx context.Context, args ...CmdArg) *Command
NewCommand creates and returns a new Git Command based on given command and arguments. Each argument should be safe to be trusted. User-provided arguments should be passed to AddDynamicArguments instead.
func NewCommandContextNoGlobals ¶ added in v1.12.0
func NewCommandContextNoGlobals(ctx context.Context, args ...CmdArg) *Command
NewCommandContextNoGlobals creates and returns a new Git Command based on given command and arguments only with the specify args and don't care global command args Each argument should be safe to be trusted. User-provided arguments should be passed to AddDynamicArguments instead.
func NewCommandNoGlobals ¶ added in v1.11.0
func NewCommandNoGlobals(args ...CmdArg) *Command
NewCommandNoGlobals creates and returns a new Git Command based on given command and arguments only with the specify args and don't care global command args Each argument should be safe to be trusted. User-provided arguments should be passed to AddDynamicArguments instead.
func (*Command) AddArguments ¶
func (c *Command) AddArguments(args ...CmdArg) *Command
AddArguments adds new git argument(s) to the command. Each argument must be safe to be trusted. User-provided arguments should be passed to AddDynamicArguments instead.
func (*Command) AddDashesAndList ¶ added in v1.17.4
func (c *Command) AddDashesAndList(list ...string) *Command
AddDashesAndList adds the "--" and then add the list as arguments, it's usually for adding file list At the moment, this function can be only called once, maybe in future it can be refactored to support multiple calls (if necessary)
func (*Command) AddDynamicArguments ¶ added in v1.17.3
func (c *Command) AddDynamicArguments(args ...string) *Command
AddDynamicArguments adds new dynamic argument(s) to the command. The arguments may come from user input and can not be trusted, so no leading '-' is allowed to avoid passing options
func (*Command) Run ¶
func (c *Command) Run(opts *RunOpts) error
Run runs the command with the RunOpts
func (*Command) RunStdBytes ¶ added in v1.17.0
func (c *Command) RunStdBytes(opts *RunOpts) (stdout, stderr []byte, runErr RunStdError)
RunStdBytes runs the command with options and returns stdout/stderr as bytes. and store stderr to returned error (err combined with stderr).
func (*Command) RunStdString ¶ added in v1.17.0
func (c *Command) RunStdString(opts *RunOpts) (stdout, stderr string, runErr RunStdError)
RunStdString runs the command with options and returns stdout/stderr as string. and store stderr to returned error (err combined with stderr).
func (*Command) SetDescription ¶ added in v1.11.0
func (c *Command) SetDescription(desc string) *Command
SetDescription sets the description for this command which be returned on c.String()
func (*Command) SetParentContext ¶ added in v1.11.0
func (c *Command) SetParentContext(ctx context.Context) *Command
SetParentContext sets the parent context for this command
type Commit ¶
type Commit struct {
Branch string // Branch this commit belongs to
Tree
ID SHA1 // The ID of this commit object
Author *Signature
Committer *Signature
CommitMessage string
Signature *CommitGPGSignature
Parents []SHA1 // SHA1 strings
// contains filtered or unexported fields
}
Commit represents a git commit.
func CommitFromReader ¶ added in v1.12.0
func CommitFromReader(gitRepo *Repository, sha SHA1, reader io.Reader) (*Commit, error)
CommitFromReader will generate a Commit from a provided reader We need this to interpret commits from cat-file or cat-file --batch
If used as part of a cat-file --batch stream you need to limit the reader to the correct size
func (*Commit) CacheCommit ¶ added in v1.17.4
func (c *Commit) CacheCommit(ctx context.Context) error
CacheCommit will cache the commit from the gitRepository
func (*Commit) CommitsBefore ¶
func (c *Commit) CommitsBefore() ([]*Commit, error)
CommitsBefore returns all the commits before current revision
func (*Commit) CommitsBeforeLimit ¶
func (c *Commit) CommitsBeforeLimit(num int) ([]*Commit, error)
CommitsBeforeLimit returns num commits before current revision
func (*Commit) CommitsBeforeUntil ¶
func (c *Commit) CommitsBeforeUntil(commitID string) ([]*Commit, error)
CommitsBeforeUntil returns the commits between commitID to current revision
func (*Commit) CommitsByRange ¶
func (c *Commit) CommitsByRange(page, pageSize int) ([]*Commit, error)
CommitsByRange returns the specific page commits before current revision, every page's number default by CommitsRangeSize
func (*Commit) CommitsCount ¶
func (c *Commit) CommitsCount() (int64, error)
CommitsCount returns number of total commits of until current revision.
func (*Commit) FileChangedSinceCommit ¶
func (c *Commit) FileChangedSinceCommit(filename, pastCommit string) (bool, error)
FileChangedSinceCommit Returns true if the file given has changed since the the past commit YOU MUST ENSURE THAT pastCommit is a valid commit ID.
func (*Commit) GetBranchName ¶
func (c *Commit) GetBranchName() (string, error)
GetBranchName gets the closest branch name (as returned by 'git name-rev --name-only')
func (*Commit) GetCommitByPath ¶
func (c *Commit) GetCommitByPath(relpath string) (*Commit, error)
GetCommitByPath return the commit of relative path object.
func (*Commit) GetFileContent ¶ added in v1.17.0
func (c *Commit) GetFileContent(filename string, limit int) (string, error)
GetFileContent reads a file content as a string or returns false if this was not possible
func (*Commit) GetFilesChangedSinceCommit ¶
func (c *Commit) GetFilesChangedSinceCommit(pastCommit string) ([]string, error)
GetFilesChangedSinceCommit get all changed file names between pastCommit to current revision
func (*Commit) GetRepositoryDefaultPublicGPGKey ¶ added in v1.11.0
func (c *Commit) GetRepositoryDefaultPublicGPGKey(forceUpdate bool) (*GPGSettings, error)
GetRepositoryDefaultPublicGPGKey returns the default public key for this commit
func (*Commit) GetSubModule ¶
func (c *Commit) GetSubModule(entryname string) (*SubModule, error)
GetSubModule get the sub module according entryname
func (*Commit) GetSubModules ¶
func (c *Commit) GetSubModules() (*ObjectCache, error)
GetSubModules get all the sub modules of current revision git tree
func (*Commit) GetTagName ¶ added in v1.13.0
func (c *Commit) GetTagName() (string, error)
GetTagName gets the current tag name for given commit
func (*Commit) HasFile ¶ added in v1.10.0
func (c *Commit) HasFile(filename string) (bool, error)
HasFile returns true if the file given exists on this commit This does only mean it's there - it does not mean the file was changed during the commit.
func (*Commit) HasPreviousCommit ¶ added in v1.11.0
func (c *Commit) HasPreviousCommit(commitHash SHA1) (bool, error)
HasPreviousCommit returns true if a given commitHash is contained in commit's parents
func (*Commit) LoadBranchName ¶ added in v1.13.0
func (c *Commit) LoadBranchName() (err error)
LoadBranchName load branch name for commit
func (*Commit) Message ¶
func (c *Commit) Message() string
Message returns the commit message. Same as retrieving CommitMessage directly.
func (*Commit) Parent ¶
func (c *Commit) Parent(n int) (*Commit, error)
Parent returns n-th parent (0-based index) of the commit.
func (*Commit) ParentCount ¶
func (c *Commit) ParentCount() int
ParentCount returns number of parents of the commit. 0 if this is the root commit, otherwise 1,2, etc.
func (*Commit) ParentID ¶
func (c *Commit) ParentID(n int) (SHA1, error)
ParentID returns oid of n-th parent (0-based index). It returns nil if no such parent exists.
func (*Commit) SearchCommits ¶
func (c *Commit) SearchCommits(opts SearchCommitsOptions) ([]*Commit, error)
SearchCommits returns the commits match the keyword before current revision
type CommitChangesOptions ¶
type CommitChangesOptions struct {
Committer *Signature
Author *Signature
Message string
}
CommitChangesOptions the options when a commit created
type CommitFileStatus ¶
type CommitFileStatus struct {
Added []string
Removed []string
Modified []string
}
CommitFileStatus represents status of files in a commit.
func GetCommitFileStatus ¶
func GetCommitFileStatus(ctx context.Context, repoPath, commitID string) (*CommitFileStatus, error)
GetCommitFileStatus returns file status of commit in given repository.
func NewCommitFileStatus ¶
func NewCommitFileStatus() *CommitFileStatus
NewCommitFileStatus creates a CommitFileStatus
type CommitGPGSignature ¶
type CommitGPGSignature struct {
Signature string
Payload string // TODO check if can be reconstruct from the rest of commit information to not have duplicate data
}
CommitGPGSignature represents a git commit signature part.
type CommitInfo ¶ added in v1.14.0
type CommitInfo struct {
Entry *TreeEntry
Commit *Commit
SubModuleFile *SubModuleFile
}
CommitInfo describes the first commit with the provided entry
type CommitTreeOpts ¶
type CommitTreeOpts struct {
Parents []string
Message string
KeyID string
NoGPGSign bool
AlwaysSign bool
}
CommitTreeOpts represents the possible options to CommitTree
type CompareInfo ¶
type CompareInfo struct {
MergeBase string
BaseCommitID string
HeadCommitID string
Commits []*Commit
NumFiles int
}
CompareInfo represents needed information for comparing references.
type DeleteBranchOptions ¶
type DeleteBranchOptions struct {
Force bool
}
DeleteBranchOptions Option(s) for delete branch
type DivergeObject ¶
type DivergeObject struct {
Ahead int
Behind int
}
DivergeObject represents commit count diverging commits
func GetDivergingCommits ¶
func GetDivergingCommits(ctx context.Context, repoPath, baseBranch, targetBranch string) (DivergeObject, error)
GetDivergingCommits returns the number of commits a targetBranch is ahead or behind a baseBranch
type Entries ¶
type Entries []*TreeEntry
Entries a list of entry
func (Entries) CustomSort ¶
func (tes Entries) CustomSort(cmp func(s1, s2 string) bool)
CustomSort customizable string comparing sort entry list
func (Entries) GetCommitsInfo ¶
func (tes Entries) GetCommitsInfo(ctx context.Context, commit *Commit, treePath string) ([]CommitInfo, *Commit, error)
GetCommitsInfo gets information of all commits that are corresponding to these entries
type EntryMode ¶
type EntryMode int
EntryMode the type of the object in the git tree
const (
// EntryModeBlob
EntryModeBlob EntryMode = 0o100644
// EntryModeExec
EntryModeExec EntryMode = 0o100755
// EntryModeSymlink
EntryModeSymlink EntryMode = 0o120000
// EntryModeCommit
EntryModeCommit EntryMode = 0o160000
// EntryModeTree
EntryModeTree EntryMode = 0o040000
)
There are only a few file modes in Git. They look like unix file modes, but they can only be one of these.
func ToEntryMode ¶ added in v1.14.0
func ToEntryMode(value string) EntryMode
ToEntryMode converts a string to an EntryMode
type ErrBadLink ¶
type ErrBadLink struct {
Name string
Message string
}
ErrBadLink entry.FollowLink error
type ErrBranchNotExist ¶
type ErrBranchNotExist struct {
Name string
}
ErrBranchNotExist represents a "BranchNotExist" kind of error.
type ErrExecTimeout ¶
type ErrExecTimeout struct {
Duration time.Duration
}
ErrExecTimeout error when exec timed out
type ErrMoreThanOne ¶ added in v1.15.0
type ErrMoreThanOne struct {
StdOut string
StdErr string
Err error
}
ErrMoreThanOne represents an error if pull request fails when there are more than one sources (branch, tag) with the same name
type ErrNotExist ¶
type ErrNotExist struct {
ID string
RelPath string
}
ErrNotExist commit not exist error
type ErrPushOutOfDate ¶ added in v1.12.0
type ErrPushOutOfDate struct {
StdOut string
StdErr string
Err error
}
ErrPushOutOfDate represents an error if merging fails due to unrelated histories
type ErrPushRejected ¶ added in v1.12.0
type ErrPushRejected struct {
Message string
StdOut string
StdErr string
Err error
}
ErrPushRejected represents an error if merging fails due to rejection from a hook
func (*ErrPushRejected) GenerateMessage ¶ added in v1.12.0
func (err *ErrPushRejected) GenerateMessage()
GenerateMessage generates the remote message from the stderr
type ErrUnsupportedVersion ¶
type ErrUnsupportedVersion struct {
Required string
}
ErrUnsupportedVersion error when required git version not matched
type GPGSettings ¶ added in v1.11.0
type GPGSettings struct {
Sign bool
KeyID string
Email string
Name string
PublicKeyContent string
}
GPGSettings represents the default GPG settings for this repository
func (*GPGSettings) LoadPublicKeyContent ¶ added in v1.11.0
func (gpgSettings *GPGSettings) LoadPublicKeyContent() error
LoadPublicKeyContent will load the key from gpg
type Hasher ¶ added in v1.14.0
type Hasher struct {
hash.Hash
}
Hasher is a struct that will generate a SHA1
type Hook ¶
type Hook struct {
IsActive bool // Indicates whether repository has this hook.
Content string // Content of hook if it's active.
Sample string // Sample content from Git.
// contains filtered or unexported fields
}
Hook represents a Git hook.
func GetHook ¶
func GetHook(repoPath, name string) (*Hook, error)
GetHook returns a Git hook by given name and repository.
type LastCommitCache ¶
type LastCommitCache struct {
// contains filtered or unexported fields
}
LastCommitCache represents a cache to store last commit
func NewLastCommitCache ¶ added in v1.14.0
func NewLastCommitCache(count int64, repoPath string, gitRepo *Repository, cache Cache) *LastCommitCache
NewLastCommitCache creates a new last commit cache for repo
func (*LastCommitCache) Get ¶
func (c *LastCommitCache) Get(ref, entryPath string) (*Commit, error)
Get gets the last commit information by commit id and entry path
func (*LastCommitCache) GetCommitByPath ¶ added in v1.17.4
func (c *LastCommitCache) GetCommitByPath(commitID, entryPath string) (*Commit, error)
GetCommitByPath gets the last commit for the entry in the provided commit
type LimitedReaderCloser ¶ added in v1.14.0
type LimitedReaderCloser struct {
R io.Reader
C io.Closer
N int64
}
LimitedReaderCloser is a limited reader closer
type LogNameStatusCommitData ¶ added in v1.15.0
type LogNameStatusCommitData struct {
CommitID string
ParentIDs []string
Paths []bool
}
LogNameStatusCommitData represents a commit artefact from git log raw
type LogNameStatusRepoParser ¶ added in v1.15.0
type LogNameStatusRepoParser struct {
// contains filtered or unexported fields
}
LogNameStatusRepoParser parses a git log raw output from LogRawRepo
func NewLogNameStatusRepoParser ¶ added in v1.15.0
func NewLogNameStatusRepoParser(ctx context.Context, repository, head, treepath string, paths ...string) *LogNameStatusRepoParser
NewLogNameStatusRepoParser returns a new parser for a git log raw output
type Note ¶
type Note struct {
Message []byte
Commit *Commit
}
Note stores information about a note created using git-notes.
type ObjectCache ¶
type ObjectCache struct {
// contains filtered or unexported fields
}
ObjectCache provides thread-safe cache operations.
type ObjectType ¶
type ObjectType string
ObjectType git object type
const (
// ObjectCommit commit object type
ObjectCommit ObjectType = "commit"
// ObjectTree tree object type
ObjectTree ObjectType = "tree"
// ObjectBlob blob object type
ObjectBlob ObjectType = "blob"
// ObjectTag tag object type
ObjectTag ObjectType = "tag"
// ObjectBranch branch object type
ObjectBranch ObjectType = "branch"
)
type PushOptions ¶
type PushOptions struct {
Remote string
Branch string
Force bool
Mirror bool
Env []string
Timeout time.Duration
}
PushOptions options when push to remote
type RawDiffType ¶ added in v1.12.0
type RawDiffType string
RawDiffType type of a raw diff.
const (
RawDiffNormal RawDiffType = "diff"
RawDiffPatch RawDiffType = "patch"
)
RawDiffType possible values.
type RefName ¶ added in v1.17.4
type RefName string
RefName represents a git reference name
type Reference ¶
type Reference struct {
Name string
Object SHA1 // The id of this commit object
Type string
// contains filtered or unexported fields
}
Reference represents a Git ref.
func (*Reference) Commit ¶
func (ref *Reference) Commit() (*Commit, error)
Commit return the commit of the reference
type Repository ¶
type Repository struct {
Path string
Ctx context.Context
LastCommitCache *LastCommitCache
// contains filtered or unexported fields
}
Repository represents a Git repository.
func OpenRepository ¶
func OpenRepository(ctx context.Context, repoPath string) (*Repository, error)
OpenRepository opens the repository at the given path with the provided context.
func RepositoryFromContext ¶ added in v1.17.0
func RepositoryFromContext(ctx context.Context, path string) *Repository
RepositoryFromContext attempts to get the repository from the context
func RepositoryFromContextOrOpen ¶ added in v1.17.0
func RepositoryFromContextOrOpen(ctx context.Context, path string) (*Repository, io.Closer, error)
RepositoryFromContextOrOpen attempts to get the repository from the context or just opens it
func (*Repository) AddLastCommitCache ¶ added in v1.17.4
func (repo *Repository) AddLastCommitCache(cacheKey, fullName, sha string) error
func (*Repository) AddObjectToIndex ¶
func (repo *Repository) AddObjectToIndex(mode string, object SHA1, filename string) error
AddObjectToIndex adds the provided object hash to the index at the provided filename
func (*Repository) AddRemote ¶
func (repo *Repository) AddRemote(name, url string, fetch bool) error
AddRemote adds a new remote to repository.
func (*Repository) CatFileBatch ¶ added in v1.15.0
func (repo *Repository) CatFileBatch(ctx context.Context) (WriteCloserError, *bufio.Reader, func())
CatFileBatch obtains a CatFileBatch for this repository
func (*Repository) CatFileBatchCheck ¶ added in v1.15.0
func (repo *Repository) CatFileBatchCheck(ctx context.Context) (WriteCloserError, *bufio.Reader, func())
CatFileBatchCheck obtains a CatFileBatchCheck for this repository
func (*Repository) CheckAttribute ¶ added in v1.11.0
func (repo *Repository) CheckAttribute(opts CheckAttributeOpts) (map[string]map[string]string, error)
CheckAttribute return the Blame object of file
func (*Repository) CheckAttributeReader ¶ added in v1.17.0
func (repo *Repository) CheckAttributeReader(commitID string) (*CheckAttributeReader, context.CancelFunc)
Create a check attribute reader for the current repository and provided commit ID
func (*Repository) Close ¶ added in v1.9.6
func (repo *Repository) Close() (err error)
Close this repository, in particular close the underlying gogitStorage if this is not nil
func (*Repository) CommitTree ¶
func (repo *Repository) CommitTree(author, committer *Signature, tree *Tree, opts CommitTreeOpts) (SHA1, error)
CommitTree creates a commit from a given tree id for the user with provided message
func (*Repository) CommitsBetween ¶
func (repo *Repository) CommitsBetween(last, before *Commit) ([]*Commit, error)
CommitsBetween returns a list that contains commits between [before, last). If before is detached (removed by reset + push) it is not included.
func (*Repository) CommitsBetweenIDs ¶
func (repo *Repository) CommitsBetweenIDs(last, before string) ([]*Commit, error)
CommitsBetweenIDs return commits between twoe commits
func (*Repository) CommitsBetweenLimit ¶ added in v1.11.0
func (repo *Repository) CommitsBetweenLimit(last, before *Commit, limit, skip int) ([]*Commit, error)
CommitsBetweenLimit returns a list that contains at most limit commits skipping the first skip commits between [before, last)
func (*Repository) CommitsByFileAndRange ¶
func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) ([]*Commit, error)
CommitsByFileAndRange return the commits according revision file and the page
func (*Repository) CommitsCountBetween ¶
func (repo *Repository) CommitsCountBetween(start, end string) (int64, error)
CommitsCountBetween return numbers of commits between two commits
func (*Repository) ConvertToSHA1 ¶ added in v1.9.1
func (repo *Repository) ConvertToSHA1(commitID string) (SHA1, error)
ConvertToSHA1 returns a Hash object from a potential ID string
func (*Repository) CreateAnnotatedTag ¶
func (repo *Repository) CreateAnnotatedTag(name, message, revision string) error
CreateAnnotatedTag create one annotated tag in the repository
func (*Repository) CreateArchive ¶ added in v1.15.0
func (repo *Repository) CreateArchive(ctx context.Context, format ArchiveType, target io.Writer, usePrefix bool, commitID string) error
CreateArchive create archive content to the target path
func (*Repository) CreateBranch ¶
func (repo *Repository) CreateBranch(branch, oldbranchOrCommit string) error
CreateBranch create a new branch
func (*Repository) CreateBundle ¶ added in v1.16.0
func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.Writer) error
CreateBundle create bundle content to the target path
func (*Repository) CreateTag ¶
func (repo *Repository) CreateTag(name, revision string) error
CreateTag create one tag in the repository
func (*Repository) DeleteBranch ¶
func (repo *Repository) DeleteBranch(name string, opts DeleteBranchOptions) error
DeleteBranch delete a branch by name on repository.
func (*Repository) EmptyIndex ¶
func (repo *Repository) EmptyIndex() error
EmptyIndex empties the index
func (*Repository) FileBlame ¶
func (repo *Repository) FileBlame(revision, path, file string) ([]byte, error)
FileBlame return the Blame object of file
func (*Repository) FileChangedBetweenCommits ¶
func (repo *Repository) FileChangedBetweenCommits(filename, id1, id2 string) (bool, error)
FileChangedBetweenCommits Returns true if the file changed between commit IDs id1 and id2 You must ensure that id1 and id2 are valid commit ids.
func (*Repository) FileCommitsCount ¶
func (repo *Repository) FileCommitsCount(revision, file string) (int64, error)
FileCommitsCount return the number of files at a revision
func (*Repository) FilesCountBetween ¶
func (repo *Repository) FilesCountBetween(startCommitID, endCommitID string) (int, error)
FilesCountBetween return the number of files changed between two commits
func (*Repository) GetAllCommitsCount ¶ added in v1.11.0
func (repo *Repository) GetAllCommitsCount() (int64, error)
GetAllCommitsCount returns count of all commits in repository
func (*Repository) GetAnnotatedTag ¶
func (repo *Repository) GetAnnotatedTag(sha string) (*Tag, error)
GetAnnotatedTag returns a Git tag by its SHA, must be an annotated tag
func (*Repository) GetBlob ¶
func (repo *Repository) GetBlob(idStr string) (*Blob, error)
GetBlob finds the blob object in the repository.
func (*Repository) GetBranch ¶
func (repo *Repository) GetBranch(branch string) (*Branch, error)
GetBranch returns a branch by it's name
func (*Repository) GetBranchCommit ¶
func (repo *Repository) GetBranchCommit(name string) (*Commit, error)
GetBranchCommit returns the last commit of given branch.
func (*Repository) GetBranchCommitID ¶
func (repo *Repository) GetBranchCommitID(name string) (string, error)
GetBranchCommitID returns last commit ID string of given branch.
func (*Repository) GetBranchNames ¶ added in v1.16.0
func (repo *Repository) GetBranchNames(skip, limit int) ([]string, int, error)
GetBranchNames returns branches from the repository, skipping skip initial branches and returning at most limit branches, or all branches if limit is 0.
func (*Repository) GetBranches ¶
func (repo *Repository) GetBranches(skip, limit int) ([]*Branch, int, error)
GetBranches returns a slice of *git.Branch
func (*Repository) GetCodeActivityStats ¶
func (repo *Repository) GetCodeActivityStats(fromTime time.Time, branch string) (*CodeActivityStats, error)
GetCodeActivityStats returns code statistics for activity page
func (*Repository) GetCommit ¶
func (repo *Repository) GetCommit(commitID string) (*Commit, error)
GetCommit returns commit object of by ID string.
func (*Repository) GetCommitByPath ¶
func (repo *Repository) GetCommitByPath(relpath string) (*Commit, error)
GetCommitByPath returns the last commit of relative path.
func (*Repository) GetCommitsFromIDs ¶ added in v1.13.0
func (repo *Repository) GetCommitsFromIDs(commitIDs []string) []*Commit
GetCommitsFromIDs get commits from commit IDs
func (*Repository) GetCompareInfo ¶
func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string, directComparison, fileOnly bool) (_ *CompareInfo, err error)
GetCompareInfo generates and returns compare information between base and head branches of repositories.
func (*Repository) GetDefaultBranch ¶ added in v1.13.0
func (repo *Repository) GetDefaultBranch() (string, error)
GetDefaultBranch gets default branch of repository.
func (*Repository) GetDefaultPublicGPGKey ¶ added in v1.11.0
func (repo *Repository) GetDefaultPublicGPGKey(forceUpdate bool) (*GPGSettings, error)
GetDefaultPublicGPGKey will return and cache the default public GPG settings for this repository
func (*Repository) GetDiff ¶ added in v1.11.0
func (repo *Repository) GetDiff(base, head string, w io.Writer) error
GetDiff generates and returns patch data between given revisions, optimized for human readability
func (*Repository) GetDiffBinary ¶ added in v1.16.0
func (repo *Repository) GetDiffBinary(base, head string, w io.Writer) error
GetDiffBinary generates and returns patch data between given revisions, including binary diffs.
func (*Repository) GetDiffFromMergeBase ¶ added in v1.12.0
func (repo *Repository) GetDiffFromMergeBase(base, head string, w io.Writer) error
GetDiffFromMergeBase generates and return patch data from merge base to head
func (*Repository) GetDiffNumChangedFiles ¶ added in v1.13.0
func (repo *Repository) GetDiffNumChangedFiles(base, head string, directComparison bool) (int, error)
GetDiffNumChangedFiles counts the number of changed files This is substantially quicker than shortstat but...
func (*Repository) GetDiffOrPatch ¶ added in v1.11.0
func (repo *Repository) GetDiffOrPatch(base, head string, w io.Writer, patch, binary bool) error
GetDiffOrPatch generates either diff or formatted patch data between given revisions
func (*Repository) GetDiffShortStat ¶ added in v1.13.0
func (repo *Repository) GetDiffShortStat(base, head string) (numFiles, totalAdditions, totalDeletions int, err error)
GetDiffShortStat counts number of changed files, number of additions and deletions
func (*Repository) GetFilesChangedBetween ¶ added in v1.17.0
func (repo *Repository) GetFilesChangedBetween(base, head string) ([]string, error)
GetFilesChangedBetween returns a list of all files that have been changed between the given commits
func (*Repository) GetHEADBranch ¶
func (repo *Repository) GetHEADBranch() (*Branch, error)
GetHEADBranch returns corresponding branch of HEAD.
func (*Repository) GetHook ¶
func (repo *Repository) GetHook(name string) (*Hook, error)
GetHook get one hook according the name on a repository
func (*Repository) GetLanguageStats ¶ added in v1.12.0
func (repo *Repository) GetLanguageStats(commitID string) (map[string]int64, error)
GetLanguageStats calculates language stats for git repository at specified commit
func (*Repository) GetMergeBase ¶
func (repo *Repository) GetMergeBase(tmpRemote, base, head string) (string, string, error)
GetMergeBase checks and returns merge base of two branches and the reference used as base.
func (*Repository) GetPatch ¶
func (repo *Repository) GetPatch(base, head string, w io.Writer) error
GetPatch generates and returns format-patch data between given revisions, able to be used with `git apply`
func (*Repository) GetRefCommitID ¶
func (repo *Repository) GetRefCommitID(name string) (string, error)
GetRefCommitID returns the last commit ID string of given reference (branch or tag).
func (*Repository) GetRefType ¶
func (repo *Repository) GetRefType(ref string) ObjectType
GetRefType gets the type of the ref based on the string
func (*Repository) GetRefs ¶
func (repo *Repository) GetRefs() ([]*Reference, error)
GetRefs returns all references of the repository.
func (*Repository) GetRefsBySha ¶ added in v1.17.0
func (repo *Repository) GetRefsBySha(sha, prefix string) ([]string, error)
GetRefsBySha returns all references filtered with prefix that belong to a sha commit hash
func (*Repository) GetRefsFiltered ¶
func (repo *Repository) GetRefsFiltered(pattern string) ([]*Reference, error)
GetRefsFiltered returns all references of the repository that matches patterm exactly or starting with.
func (*Repository) GetTag ¶
func (repo *Repository) GetTag(name string) (*Tag, error)
GetTag returns a Git tag by given name.
func (*Repository) GetTagCommit ¶
func (repo *Repository) GetTagCommit(name string) (*Commit, error)
GetTagCommit get the commit of the specific tag via name
func (*Repository) GetTagCommitID ¶
func (repo *Repository) GetTagCommitID(name string) (string, error)
GetTagCommitID returns last commit ID string of given tag.
func (*Repository) GetTagID ¶
func (repo *Repository) GetTagID(name string) (string, error)
GetTagID returns the object ID for a tag (annotated tags have both an object SHA AND a commit SHA)
func (*Repository) GetTagInfos ¶
func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error)
GetTagInfos returns all tag infos of the repository.
func (*Repository) GetTagNameBySHA ¶
func (repo *Repository) GetTagNameBySHA(sha string) (string, error)
GetTagNameBySHA returns the name of a tag from its tag object SHA or commit SHA
func (*Repository) GetTagType ¶
func (repo *Repository) GetTagType(id SHA1) (string, error)
GetTagType gets the type of the tag, either commit (simple) or tag (annotated)
func (*Repository) GetTagWithID ¶ added in v1.16.6
func (repo *Repository) GetTagWithID(idStr, name string) (*Tag, error)
GetTagWithID returns a Git tag by given name and ID
func (*Repository) GetTags ¶
func (repo *Repository) GetTags(skip, limit int) (tags []string, err error)
GetTags returns all tags of the repository. returning at most limit tags, or all if limit is 0.
func (*Repository) GetTree ¶
func (repo *Repository) GetTree(idStr string) (*Tree, error)
GetTree find the tree object in the repository.
func (*Repository) HashObject ¶
func (repo *Repository) HashObject(reader io.Reader) (SHA1, error)
HashObject takes a reader and returns SHA1 hash for that reader
func (*Repository) Hooks ¶
func (repo *Repository) Hooks() ([]*Hook, error)
Hooks get all the hooks on the repository
func (*Repository) IsBranchExist ¶
func (repo *Repository) IsBranchExist(name string) bool
IsBranchExist returns true if given branch exists in current repository.
func (*Repository) IsCommitExist ¶
func (repo *Repository) IsCommitExist(name string) bool
IsCommitExist returns true if given commit exists in current repository.
func (*Repository) IsCommitInBranch ¶ added in v1.14.0
func (repo *Repository) IsCommitInBranch(commitID, branch string) (r bool, err error)
IsCommitInBranch check if the commit is on the branch
func (*Repository) IsEmpty ¶
func (repo *Repository) IsEmpty() (bool, error)
IsEmpty Check if repository is empty.
func (*Repository) IsObjectExist ¶ added in v1.15.0
func (repo *Repository) IsObjectExist(name string) bool
IsObjectExist returns true if given reference exists in the repository.
func (*Repository) IsReferenceExist ¶ added in v1.15.0
func (repo *Repository) IsReferenceExist(name string) bool
IsReferenceExist returns true if given reference exists in the repository.
func (*Repository) IsTagExist ¶
func (repo *Repository) IsTagExist(name string) bool
IsTagExist returns true if given tag exists in the repository.
func (*Repository) LineBlame ¶
func (repo *Repository) LineBlame(revision, path, file string, line uint) (*Commit, error)
LineBlame returns the latest commit at the given line
func (*Repository) LsFiles ¶
func (repo *Repository) LsFiles(filenames ...string) ([]string, error)
LsFiles checks if the given filenames are in the index
func (*Repository) LsTree ¶ added in v1.15.0
func (repo *Repository) LsTree(ref string, filenames ...string) ([]string, error)
LsTree checks if the given filenames are in the tree
func (*Repository) ReadPatchCommit ¶ added in v1.16.0
func (repo *Repository) ReadPatchCommit(prID int64) (commitSHA string, err error)
ReadPatchCommit will check if a diff patch exists and return stats
func (*Repository) ReadTreeToIndex ¶
func (repo *Repository) ReadTreeToIndex(treeish string, indexFilename ...string) error
ReadTreeToIndex reads a treeish to the index
func (*Repository) ReadTreeToTemporaryIndex ¶ added in v1.16.0
func (repo *Repository) ReadTreeToTemporaryIndex(treeish string) (filename, tmpDir string, cancel context.CancelFunc, err error)
ReadTreeToTemporaryIndex reads a treeish to a temporary index file
func (*Repository) RemoveFilesFromIndex ¶
func (repo *Repository) RemoveFilesFromIndex(filenames ...string) error
RemoveFilesFromIndex removes given filenames from the index - it does not check whether they are present.
func (*Repository) RemoveReference ¶ added in v1.16.0
func (repo *Repository) RemoveReference(name string) error
RemoveReference removes the given reference (e.g. branch or tag).
func (*Repository) RemoveRemote ¶
func (repo *Repository) RemoveRemote(name string) error
RemoveRemote removes a remote from repository.
func (*Repository) RenameBranch ¶ added in v1.16.0
func (repo *Repository) RenameBranch(from, to string) error
RenameBranch rename a branch
func (*Repository) ResolveReference ¶ added in v1.14.0
func (repo *Repository) ResolveReference(name string) (string, error)
ResolveReference resolves a name to a reference
func (*Repository) SetDefaultBranch ¶
func (repo *Repository) SetDefaultBranch(name string) error
SetDefaultBranch sets default branch of repository.
func (*Repository) SetReference ¶ added in v1.16.0
func (repo *Repository) SetReference(name, commitID string) error
SetReference sets the commit ID string of given reference (e.g. branch or tag).
func (*Repository) WalkReferences ¶ added in v1.16.6
func (repo *Repository) WalkReferences(refType ObjectType, skip, limit int, walkfn func(sha1, refname string) error) (int, error)
WalkReferences walks all the references from the repository refType should be empty, ObjectTag or ObjectBranch. All other values are equivalent to empty.
type RunOpts ¶ added in v1.17.0
type RunOpts struct {
Env []string
Timeout time.Duration
UseContextTimeout bool
Dir string
Stdout, Stderr io.Writer
Stdin io.Reader
PipelineFunc func(context.Context, context.CancelFunc) error
}
RunOpts represents parameters to run the command. If UseContextTimeout is specified, then Timeout is ignored.
type RunStdError ¶ added in v1.17.0
type RunStdError interface {
error
Unwrap() error
Stderr() string
IsExitCode(code int) bool
}
type SHA1 ¶
type SHA1 [20]byte
SHA1 a git commit name
func ComputeBlobHash ¶ added in v1.14.0
func ComputeBlobHash(content []byte) SHA1
ComputeBlobHash compute the hash for a given blob content
func ComputeHash ¶ added in v1.14.0
func ComputeHash(t ObjectType, content []byte) SHA1
ComputeHash compute the hash for a given ObjectType and content
func MustID ¶
func MustID(b []byte) SHA1
MustID always creates a new SHA1 from a [20]byte array with no validation of input.
func MustIDFromString ¶
func MustIDFromString(s string) SHA1
MustIDFromString always creates a new sha from a ID with no validation of input.
func NewIDFromString ¶
func NewIDFromString(s string) (SHA1, error)
NewIDFromString creates a new SHA1 from a ID string of length 40.
type SearchCommitsOptions ¶
type SearchCommitsOptions struct {
Keywords []string
Authors, Committers []string
After, Before string
All bool
}
SearchCommitsOptions specify the parameters for SearchCommits
func NewSearchCommitsOptions ¶
func NewSearchCommitsOptions(searchString string, forAllRefs bool) SearchCommitsOptions
NewSearchCommitsOptions construct a SearchCommitsOption from a space-delimited search string
type Signature ¶
type Signature struct {
// Name represents a person name. It is an arbitrary string.
Name string
// Email is an email, but it cannot be assumed to be well-formed.
Email string
// When is the timestamp of the signature.
When time.Time
}
Signature represents the Author or Committer information.
type SubModule ¶
type SubModule struct {
Name string
URL string
}
SubModule submodule is a reference on git repository
type SubModuleFile ¶
type SubModuleFile struct {
*Commit
// contains filtered or unexported fields
}
SubModuleFile represents a file with submodule type.
func NewSubModuleFile ¶
func NewSubModuleFile(c *Commit, refURL, refID string) *SubModuleFile
NewSubModuleFile create a new submodule file
type Tag ¶
type Tag struct {
Name string
ID SHA1
Object SHA1 // The id of this commit object
Type string
Tagger *Signature
Message string
Signature *CommitGPGSignature
}
Tag represents a Git tag.
type Tree ¶
type Tree struct {
ID SHA1
ResolvedID SHA1
// contains filtered or unexported fields
}
Tree represents a flat directory listing.
func NewTree ¶
func NewTree(repo *Repository, id SHA1) *Tree
NewTree create a new tree according the repository and tree id
func (*Tree) GetBlobByPath ¶
func (t *Tree) GetBlobByPath(relpath string) (*Blob, error)
GetBlobByPath get the blob object according the path
func (*Tree) GetTreeEntryByPath ¶
func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error)
GetTreeEntryByPath get the tree entries according the sub dir
func (*Tree) ListEntries ¶
func (t *Tree) ListEntries() (Entries, error)
ListEntries returns all entries of current tree.
func (*Tree) ListEntriesRecursiveFast ¶ added in v1.17.4
func (t *Tree) ListEntriesRecursiveFast() (Entries, error)
ListEntriesRecursiveFast returns all entries of current tree recursively including all subtrees, no size
func (*Tree) ListEntriesRecursiveWithSize ¶ added in v1.17.4
func (t *Tree) ListEntriesRecursiveWithSize() (Entries, error)
ListEntriesRecursiveWithSize returns all entries of current tree recursively including all subtrees, with size
type TreeEntry ¶
type TreeEntry struct {
ID SHA1
// contains filtered or unexported fields
}
TreeEntry the leaf in the git tree
func ParseTreeEntries ¶
func ParseTreeEntries(data []byte) ([]*TreeEntry, error)
ParseTreeEntries parses the output of a `git ls-tree -l` command.
func (*TreeEntry) FollowLink ¶
func (te *TreeEntry) FollowLink() (*TreeEntry, error)
FollowLink returns the entry pointed to by a symlink
func (*TreeEntry) FollowLinks ¶ added in v1.12.0
func (te *TreeEntry) FollowLinks() (*TreeEntry, error)
FollowLinks returns the entry ultimately pointed to by a symlink
func (*TreeEntry) GetSubJumpablePathName ¶
func (te *TreeEntry) GetSubJumpablePathName() string
GetSubJumpablePathName return the full path of subdirectory jumpable ( contains only one directory )
func (*TreeEntry) IsExecutable ¶ added in v1.9.1
func (te *TreeEntry) IsExecutable() bool
IsExecutable if the entry is an executable file (not necessarily binary)
func (*TreeEntry) IsRegular ¶
func (te *TreeEntry) IsRegular() bool
IsRegular if the entry is a regular file
func (*TreeEntry) IsSubModule ¶
func (te *TreeEntry) IsSubModule() bool
IsSubModule if the entry is a sub module
type WriteCloserError ¶ added in v1.15.0
type WriteCloserError interface {
io.WriteCloser
CloseWithError(err error) error
}
WriteCloserError wraps an io.WriteCloser with an additional CloseWithError function
func CatFileBatch ¶ added in v1.14.0
func CatFileBatch(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func())
CatFileBatch opens git cat-file --batch in the provided repo and returns a stdin pipe, a stdout reader and cancel function
func CatFileBatchCheck ¶ added in v1.15.0
func CatFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func())
CatFileBatchCheck opens git cat-file --batch-check in the provided repo and returns a stdin pipe, a stdout reader and cancel function
Source Files
¶
- batch_reader.go
- blame.go
- blob.go
- blob_nogogit.go
- command.go
- commit.go
- commit_info.go
- commit_info_nogogit.go
- commit_reader.go
- diff.go
- error.go
- git.go
- hook.go
- last_commit_cache.go
- last_commit_cache_nogogit.go
- log_name_status.go
- notes.go
- notes_nogogit.go
- parse_nogogit.go
- ref.go
- remote.go
- repo.go
- repo_archive.go
- repo_attribute.go
- repo_base.go
- repo_base_nogogit.go
- repo_blame.go
- repo_blob.go
- repo_blob_nogogit.go
- repo_branch.go
- repo_branch_nogogit.go
- repo_commit.go
- repo_commit_nogogit.go
- repo_commitgraph.go
- repo_compare.go
- repo_gpg.go
- repo_hook.go
- repo_index.go
- repo_language_stats.go
- repo_language_stats_nogogit.go
- repo_object.go
- repo_ref.go
- repo_ref_nogogit.go
- repo_stats.go
- repo_tag.go
- repo_tag_nogogit.go
- repo_tree.go
- repo_tree_nogogit.go
- sha1.go
- sha1_nogogit.go
- signature.go
- signature_nogogit.go
- submodule.go
- tag.go
- tree.go
- tree_blob.go
- tree_blob_nogogit.go
- tree_entry.go
- tree_entry_mode.go
- tree_entry_nogogit.go
- tree_nogogit.go
- utils.go