Documentation ¶
Index ¶
- Constants
- Variables
- func BinVersion() (string, error)
- func Clone(url, dst string, opts ...CloneOptions) error
- func Init(path string, opts ...InitOptions) error
- func IsURLAccessible(timeout time.Duration, url string) bool
- func RefShortName(ref string) string
- func SetOutput(output io.Writer)
- func SetPrefix(prefix string)
- func StreamParseDiff(r io.Reader, done chan<- SteamParseDiffResult, ...)
- func UnescapeChars(in []byte) []byte
- type AddOptions
- type AddRemoteOptions
- type ArchiveFormat
- type Blob
- type CatFileCommitOptions
- type CheckoutOptions
- type CloneOptions
- type Command
- func (c *Command) AddArgs(args ...string) *Command
- func (c *Command) AddEnvs(envs ...string) *Command
- func (c *Command) Run() ([]byte, error)
- func (c *Command) RunInDir(dir string) ([]byte, error)
- func (c *Command) RunInDirPipeline(stdout, stderr io.Writer, dir string) error
- func (c *Command) RunInDirPipelineWithTimeout(timeout time.Duration, stdout, stderr io.Writer, dir string) (err error)
- func (c *Command) RunInDirWithTimeout(timeout time.Duration, dir string) ([]byte, error)
- func (c *Command) RunWithTimeout(timeout time.Duration) ([]byte, error)
- func (c *Command) String() string
- type Commit
- func (c *Commit) Ancestors(opts ...LogOptions) ([]*Commit, error)
- func (c *Commit) Author() *Signature
- func (c *Commit) CommitByPath(opts ...CommitByRevisionOptions) (*Commit, error)
- func (c *Commit) CommitsAfter(after string, opts ...RevListOptions) ([]*Commit, error)
- func (c *Commit) CommitsByPage(page, size int, opts ...CommitsByPageOptions) ([]*Commit, error)
- func (c *Commit) CommitsCount(opts ...RevListCountOptions) (int64, error)
- func (c *Commit) Committer() *Signature
- func (c *Commit) CreateArchive(format ArchiveFormat, dst string) error
- func (c *Commit) FilesChangedAfter(after string, opts ...DiffNameOnlyOptions) ([]string, error)
- func (c *Commit) ID() *SHA1
- func (c *Commit) IsImageFile(name string) (bool, error)
- func (c *Commit) Message() string
- func (c *Commit) Parent(n int, opts ...CatFileCommitOptions) (*Commit, error)
- func (c *Commit) ParentID(n int) (*SHA1, error)
- func (c *Commit) ParentsCount() int
- func (c *Commit) SearchCommits(pattern string, opts ...SearchCommitsOptions) ([]*Commit, error)
- func (c *Commit) ShowNameStatus(opts ...ShowNameStatusOptions) (*NameStatus, error)
- func (c *Commit) Submodule(path string) (*Submodule, error)
- func (c *Commit) Submodules() (Submodules, error)
- func (c *Commit) Summary() string
- type CommitByRevisionOptions
- type CommitOptions
- type CommitsByPageOptions
- type CommitsInfoOptions
- type CommitsSinceOptions
- type CountObject
- type CountObjectsOptions
- type CreateTagOptions
- type DeleteBranchOptions
- type DeleteTagOptions
- type Diff
- type DiffBinaryOptions
- type DiffFile
- func (f *DiffFile) IsBinary() bool
- func (f *DiffFile) IsCreated() bool
- func (f *DiffFile) IsDeleted() bool
- func (f *DiffFile) IsIncomplete() bool
- func (f *DiffFile) IsRenamed() bool
- func (f *DiffFile) IsSubmodule() bool
- func (f *DiffFile) NumAdditions() int
- func (f *DiffFile) NumDeletions() int
- func (f *DiffFile) NumSections() int
- func (f *DiffFile) OldName() string
- type DiffFileType
- type DiffLine
- type DiffLineType
- type DiffNameOnlyOptions
- type DiffOptions
- type DiffSection
- type Entries
- type EntryCommitInfo
- type EntryMode
- type FetchOptions
- type FsckOptions
- type Hook
- type HookName
- type InitOptions
- type LatestCommitTimeOptions
- type LogOptions
- type LsRemoteOptions
- type LsTreeOptions
- type MergeBaseOptions
- type MoveOptions
- type NameStatus
- type ObjectType
- type PullOptions
- type PushOptions
- type RawDiffFormat
- type RawDiffOptions
- type Reference
- type RemoveRemoteOptions
- type Repository
- func (r *Repository) Add(opts ...AddOptions) error
- func (r *Repository) AddRemote(name, url string, opts ...AddRemoteOptions) error
- func (r *Repository) CatFileCommit(rev string, opts ...CatFileCommitOptions) (*Commit, error)
- func (r *Repository) Checkout(branch string, opts ...CheckoutOptions) error
- func (r *Repository) Commit(committer *Signature, message string, opts ...CommitOptions) error
- func (r *Repository) CommitByRevision(rev string, opts ...CommitByRevisionOptions) (*Commit, error)
- func (r *Repository) CommitsByPage(rev string, page, size int, opts ...CommitsByPageOptions) ([]*Commit, error)
- func (r *Repository) CommitsSince(rev string, since time.Time, opts ...CommitsSinceOptions) ([]*Commit, error)
- func (r *Repository) CountObjects(opts ...CountObjectsOptions) (*CountObject, error)
- func (r *Repository) CreateTag(name, rev string, opts ...CreateTagOptions) error
- func (r *Repository) DeleteBranch(name string, opts ...DeleteBranchOptions) error
- func (r *Repository) DeleteTag(name string, opts ...DeleteTagOptions) error
- func (r *Repository) Diff(rev string, maxFiles, maxFileLines, maxLineChars int, opts ...DiffOptions) (*Diff, error)
- func (r *Repository) DiffBinary(base, head string, opts ...DiffBinaryOptions) ([]byte, error)
- func (r *Repository) DiffNameOnly(base, head string, opts ...DiffNameOnlyOptions) ([]string, error)
- func (r *Repository) Fetch(opts ...FetchOptions) error
- func (r *Repository) Fsck(opts ...FsckOptions) error
- func (r *Repository) HasReference(ref string, opts ...ShowRefVerifyOptions) bool
- func (r *Repository) Hook(name HookName) (*Hook, error)
- func (r *Repository) Hooks() ([]*Hook, error)
- func (r *Repository) LatestCommitTime(opts ...LatestCommitTimeOptions) (time.Time, error)
- func (r *Repository) Log(rev string, opts ...LogOptions) ([]*Commit, error)
- func (r *Repository) LsTree(rev string, opts ...LsTreeOptions) (*Tree, error)
- func (r *Repository) MergeBase(base, head string, opts ...MergeBaseOptions) (string, error)
- func (r *Repository) Move(src, dst string, opts ...MoveOptions) error
- func (r *Repository) NewHook(name HookName) *Hook
- func (r *Repository) Path() string
- func (r *Repository) Pull(opts ...PullOptions) error
- func (r *Repository) Push(remote, branch string, opts ...PushOptions) error
- func (r *Repository) RawDiff(rev string, diffType RawDiffFormat, w io.Writer, opts ...RawDiffOptions) error
- func (r *Repository) RemoveRemote(name string, opts ...RemoveRemoteOptions) error
- func (r *Repository) Reset(rev string, opts ...ResetOptions) error
- func (r *Repository) RevList(refspecs []string, opts ...RevListOptions) ([]*Commit, error)
- func (r *Repository) RevListCount(refspecs []string, opts ...RevListCountOptions) (int64, error)
- func (r *Repository) RevParse(rev string, opts ...RevParseOptions) (string, error)
- func (r *Repository) SearchCommits(rev, pattern string, opts ...SearchCommitsOptions) ([]*Commit, error)
- func (r *Repository) ShowNameStatus(rev string, opts ...ShowNameStatusOptions) (*NameStatus, error)
- func (r *Repository) ShowRef(opts ...ShowRefOptions) ([]*Reference, error)
- func (r *Repository) ShowRefVerify(ref string, opts ...ShowRefVerifyOptions) (string, error)
- func (r *Repository) SymbolicRef(opts ...SymbolicRefOptions) (string, error)
- func (r *Repository) Tag(refspec string, opts ...TagOptions) (*Tag, error)
- func (r *Repository) Tags(opts ...TagsOptions) ([]string, error)
- type ResetOptions
- type RevListCountOptions
- type RevListOptions
- type RevParseOptions
- type SHA1
- type SearchCommitsOptions
- type ShowNameStatusOptions
- type ShowRefOptions
- type ShowRefVerifyOptions
- type Signature
- type SteamParseDiffResult
- type Submodule
- type Submodules
- type SymbolicRefOptions
- type Tag
- type TagOptions
- type TagsOptions
- type Tree
- type TreeEntry
- func (e *TreeEntry) Blob() *Blob
- func (e *TreeEntry) ID() *SHA1
- func (e *TreeEntry) IsBlob() bool
- func (e *TreeEntry) IsCommit() bool
- func (e *TreeEntry) IsExec() bool
- func (e *TreeEntry) IsSymlink() bool
- func (e *TreeEntry) IsTree() bool
- func (e *TreeEntry) Mode() EntryMode
- func (e *TreeEntry) Name() string
- func (e *TreeEntry) Size() int64
- func (e *TreeEntry) Type() ObjectType
Constants ¶
const ( RefsHeads = "refs/heads/" RefsTags = "refs/tags/" )
const DefaultHooksDir = "hooks"
DefaultHooksDir is the default directory for Git hooks.
const DefaultTimeout = time.Minute
DefaultTimeout is the default timeout duration for all commands.
const EmptyID = "0000000000000000000000000000000000000000"
EmptyID is an ID with empty SHA-1 hash.
const LogFormatHashOnly = `format:%H`
Variables ¶
var ( ErrParentNotExist = errors.New("parent does not exist") ErrSubmoduleNotExist = errors.New("submodule does not exist") ErrRevisionNotExist = errors.New("revision does not exist") ErrRemoteNotExist = errors.New("remote does not exist") ErrExecTimeout = errors.New("execution was timed out") ErrNoMergeBase = errors.New("no merge based was found") )
var ErrReferenceNotExist = errors.New("reference does not exist")
var ServerSideHooks = []HookName{HookPreReceive, HookUpdate, HookPostReceive}
ServerSideHooks contains a list of Git hooks are supported on the server side.
Functions ¶
func BinVersion ¶
BinVersion returns current Git binary version that is used by this module.
func Clone ¶
func Clone(url, dst string, opts ...CloneOptions) error
Clone clones the repository from remote URL to the destination.
func Init ¶ added in v1.0.0
func Init(path string, opts ...InitOptions) error
Init initializes a new Git repository.
func IsURLAccessible ¶ added in v1.0.0
IsURLAccessible returns true if given remote URL is accessible via Git.
func RefShortName ¶ added in v1.0.0
RefShortName returns short name of heads or tags. Other references will retrun original string.
func SetPrefix ¶ added in v1.0.0
func SetPrefix(prefix string)
SetPrefix sets the prefix to be prepended to each log entry.
func StreamParseDiff ¶ added in v1.0.0
func StreamParseDiff(r io.Reader, done chan<- SteamParseDiffResult, maxFiles, maxFileLines, maxLineChars int)
StreamParseDiff parses the diff read from the given io.Reader. It does parse-on-read to minimize the time spent on huge diffs. It accepts a channel to notify and send error (if any) to the caller when the process is done. Therefore, this method should be called in a goroutine asynchronously.
func UnescapeChars ¶
UnescapeChars reverses escaped characters.
Types ¶
type AddOptions ¶ added in v1.0.0
type AddOptions struct { // Indicates whether to add all changes to index. All bool // The specific pathspecs to be added to index. Pathsepcs []string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
AddOptions contains optional arguments for adding local changes. Docs: https://git-scm.com/docs/git-add
type AddRemoteOptions ¶ added in v0.8.3
type AddRemoteOptions struct { // Indicates whether to execute git fetch after the remote information is set up. Fetch bool // Indicates whether to add remote as mirror with --mirror=fetch. MirrorFetch bool // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
AddRemoteOptions contains options to add a remote address. Docs: https://git-scm.com/docs/git-remote#Documentation/git-remote.txt-emaddem
type ArchiveFormat ¶ added in v1.0.0
type ArchiveFormat string
ArchiveFormat is the format of an archive.
const ( ArchiveZip ArchiveFormat = "zip" ArchiveTarGz ArchiveFormat = "tar.gz" )
A list of formats can be created by Git for an archive.
type Blob ¶
type Blob struct {
*TreeEntry
}
Blob is a blob object.
type CatFileCommitOptions ¶ added in v1.0.0
type CatFileCommitOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CatFileCommitOptions contains optional arguments for verifying the objects. Docs: https://git-scm.com/docs/git-cat-file#Documentation/git-cat-file.txt-lttypegt
type CheckoutOptions ¶
type CheckoutOptions struct { // The base branch if checks out to a new branch. BaseBranch string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CheckoutOptions contains optional arguments for checking out to a branch. Docs: https://git-scm.com/docs/git-checkout
type CloneOptions ¶ added in v1.0.0
type CloneOptions struct { // Indicates whether the repository should be cloned as a mirror. Mirror bool // Indicates whether the repository should be cloned in bare format. Bare bool // Indicates whether to suppress the log output. Quiet bool // The branch to checkout for the working tree when Bare=false. Branch string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CloneOptions contains optional arguments for cloning a repository. Docs: https://git-scm.com/docs/git-clone
type Command ¶
type Command struct {
// contains filtered or unexported fields
}
Command contains the name, arguments and environment variables of a command.
func NewCommand ¶
NewCommand creates and returns a new Command with given arguments for "git".
func (*Command) Run ¶
Run executes the command in working directory and default timeout duration. It returns stdout in string and error (combined with stderr).
func (*Command) RunInDir ¶
RunInDir executes the command in given directory and default timeout duration. It returns stdout and error (combined with stderr).
func (*Command) RunInDirPipeline ¶
RunInDirPipeline executes the command in given directory and default timeout duration. It pipes stdout and stderr to supplied io.Writer.
func (*Command) RunInDirPipelineWithTimeout ¶ added in v1.0.0
func (c *Command) RunInDirPipelineWithTimeout(timeout time.Duration, stdout, stderr io.Writer, dir string) (err error)
RunInDirPipelineWithTimeout executes the command in given directory and timeout duration. It pipes stdout and stderr to supplied io.Writer. DefaultTimeout will be used if the timeout duration is less than time.Nanosecond (i.e. less than or equal to 0). It returns an ErrExecTimeout if the execution was timed out.
func (*Command) RunInDirWithTimeout ¶ added in v1.0.0
RunInDirWithTimeout executes the command in given directory and timeout duration. It returns stdout in []byte and error (combined with stderr).
func (*Command) RunWithTimeout ¶ added in v1.0.0
RunWithTimeout executes the command in working directory and given timeout duration. It returns stdout in string and error (combined with stderr).
type Commit ¶
type Commit struct { *Tree // contains filtered or unexported fields }
Commit contains information of a Git commit.
func (*Commit) Ancestors ¶ added in v1.0.0
func (c *Commit) Ancestors(opts ...LogOptions) ([]*Commit, error)
Ancestors returns a list of ancestors of this commit in reverse chronological order.
func (*Commit) CommitByPath ¶ added in v1.0.0
func (c *Commit) CommitByPath(opts ...CommitByRevisionOptions) (*Commit, error)
CommitByPath returns the commit of the path in the state of this commit.
func (*Commit) CommitsAfter ¶ added in v1.0.0
func (c *Commit) CommitsAfter(after string, opts ...RevListOptions) ([]*Commit, error)
CommitsAfter returns a list of commits after given commit ID up to this commit. The returned list is in reverse chronological order.
func (*Commit) CommitsByPage ¶ added in v1.0.0
func (c *Commit) CommitsByPage(page, size int, opts ...CommitsByPageOptions) ([]*Commit, error)
CommitsByPage returns a paginated list of commits in the state of this commit. The returned list is in reverse chronological order.
func (*Commit) CommitsCount ¶
func (c *Commit) CommitsCount(opts ...RevListCountOptions) (int64, error)
CommitsCount returns number of total commits up to this commit.
func (*Commit) CreateArchive ¶
func (c *Commit) CreateArchive(format ArchiveFormat, dst string) error
CreateArchive creates given format of archive to the destination.
func (*Commit) FilesChangedAfter ¶ added in v1.0.0
func (c *Commit) FilesChangedAfter(after string, opts ...DiffNameOnlyOptions) ([]string, error)
FilesChangedSince returns a list of files changed after given commit ID.
func (*Commit) IsImageFile ¶
IsImageFile returns true if the commit is an image blob.
func (*Commit) Parent ¶
func (c *Commit) Parent(n int, opts ...CatFileCommitOptions) (*Commit, error)
Parent returns the n-th parent commit (0-based) of this commit. It returns ErrRevisionNotExist if no such parent exists.
func (*Commit) ParentID ¶
ParentID returns the SHA-1 hash of the n-th parent (0-based) of this commit. It returns an ErrParentNotExist if no such parent exists.
func (*Commit) ParentsCount ¶ added in v1.0.0
ParentsCount returns number of parents of the commit. It returns 0 if this is the root commit, otherwise returns 1, 2, etc.
func (*Commit) SearchCommits ¶
func (c *Commit) SearchCommits(pattern string, opts ...SearchCommitsOptions) ([]*Commit, error)
SearchCommits searches commit message with given pattern. The returned list is in reverse chronological order.
func (*Commit) ShowNameStatus ¶ added in v1.0.0
func (c *Commit) ShowNameStatus(opts ...ShowNameStatusOptions) (*NameStatus, error)
ShowNameStatus returns name status of the commit.
func (*Commit) Submodule ¶ added in v1.0.0
Submodule returns submodule by given name. It returns an ErrSubmoduleNotExist if the path does not exist as a submodule.
func (*Commit) Submodules ¶ added in v1.0.0
func (c *Commit) Submodules() (Submodules, error)
Submodules returns submodules found in this commit.
type CommitByRevisionOptions ¶ added in v1.0.0
type CommitByRevisionOptions struct { // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CommitByRevisionOptions contains optional arguments for getting a commit. Docs: https://git-scm.com/docs/git-log
type CommitOptions ¶ added in v1.0.0
type CommitOptions struct { // Author is the author of the changes if that's not the same as committer. Author *Signature // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CommitOptions contains optional arguments to commit changes. Docs: https://git-scm.com/docs/git-commit
type CommitsByPageOptions ¶ added in v1.0.0
type CommitsByPageOptions struct { // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CommitsByPageOptions contains optional arguments for getting paginated commits. Docs: https://git-scm.com/docs/git-log
type CommitsInfoOptions ¶ added in v1.0.0
type CommitsInfoOptions struct { // The relative path of the repository. Path string // The maximum number of goroutines to be used for getting commits information. // When not set (i.e. <=0), runtime.GOMAXPROCS is used to determine the value. MaxConcurrency int // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CommitsInfoOptions contains optional arguments for getting commits information.
type CommitsSinceOptions ¶ added in v1.0.0
type CommitsSinceOptions struct { // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CommitsSinceOptions contains optional arguments for listing commits since a time. Docs: https://git-scm.com/docs/git-log
type CountObject ¶
type CountObject struct { Count int64 Size int64 InPack int64 Packs int64 SizePack int64 PrunePackable int64 Garbage int64 SizeGarbage int64 }
CountObject contains disk usage report of a repository.
func RepoCountObjects ¶ added in v1.0.0
func RepoCountObjects(repoPath string, opts ...CountObjectsOptions) (*CountObject, error)
RepoCountObjects returns disk usage report of the repository in given path.
type CountObjectsOptions ¶ added in v1.0.0
type CountObjectsOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CountObjectsOptions contains optional arguments for counting objects. Docs: https://git-scm.com/docs/git-count-objects
type CreateTagOptions ¶ added in v1.0.0
type CreateTagOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
CreateTagOptions contains optional arguments for creating a tag. Docs: https://git-scm.com/docs/git-tag
type DeleteBranchOptions ¶
type DeleteBranchOptions struct { // Indicates whether to force delete the branch. Force bool // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
DeleteBranchOptions contains optional arguments for deleting a branch. // Docs: https://git-scm.com/docs/git-branch
type DeleteTagOptions ¶ added in v1.0.0
type DeleteTagOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
DeleteTagOptions contains optional arguments for deleting a tag. Docs: https://git-scm.com/docs/git-tag#Documentation/git-tag.txt---delete
type Diff ¶
type Diff struct { Files []*DiffFile // The files in the diff // contains filtered or unexported fields }
Diff represents a Git diff.
func (*Diff) IsIncomplete ¶
IsIncomplete returns true if the file is incomplete to the entire diff.
func (*Diff) TotalAdditions ¶ added in v1.0.0
TotalAdditions returns the total additions in the diff.
func (*Diff) TotalDeletions ¶ added in v1.0.0
TotalDeletions returns the total deletions in the diff.
type DiffBinaryOptions ¶ added in v1.0.0
type DiffBinaryOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
DiffBinaryOptions contains optional arguments for producing binary patch.
type DiffFile ¶
type DiffFile struct { // The name of the file. Name string // The type of the file. Type DiffFileType // The index (SHA1 hash) of the file. For a changed/new file, it is the new SHA, // and for a deleted file it is the old SHA. Index string // The sections in the file. Sections []*DiffSection // contains filtered or unexported fields }
DiffFile represents a file in diff.
func (*DiffFile) IsIncomplete ¶
IsIncomplete returns true if the file is incomplete to the file diff.
func (*DiffFile) IsSubmodule ¶
IsSubmodule returns true if the file contains information of a submodule.
func (*DiffFile) NumAdditions ¶ added in v1.0.0
NumAdditions returns the number of additions in the file.
func (*DiffFile) NumDeletions ¶ added in v1.0.0
NumDeletions returns the number of deletions in the file.
func (*DiffFile) NumSections ¶
NumSections returns the number of sections in the file.
type DiffFileType ¶
type DiffFileType uint8
DiffFileType is the file status in diff.
const ( DiffFileAdd DiffFileType = iota + 1 DiffFileChange DiffFileDelete DiffFileRename )
A list of different file statuses.
type DiffLine ¶
type DiffLine struct { Type DiffLineType // The type of the line Content string // The content of the line LeftLine int // The left line number RightLine int // The right line number }
DiffLine represents a line in diff.
type DiffLineType ¶
type DiffLineType uint8
DiffLineType is the line type in diff.
const ( DiffLinePlain DiffLineType = iota + 1 DiffLineAdd DiffLineDelete DiffLineSection )
A list of different line types.
type DiffNameOnlyOptions ¶ added in v1.0.0
type DiffNameOnlyOptions struct { // Indicates whether two commits should have a merge base. NeedsMergeBase bool // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
DiffNameOnlyOptions contains optional arguments for listing changed files. Docs: https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---name-only
type DiffOptions ¶ added in v1.0.0
type DiffOptions struct { // The commit ID to used for computing diff between a range of commits (base, revision]. When not set, // only computes diff for a single commit at revision. Base string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
DiffOptions contains optional arguments for parsing diff. Docs: https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---full-index
type DiffSection ¶
type DiffSection struct { Lines []*DiffLine // lines in the section // contains filtered or unexported fields }
DiffSection represents a section in diff.
func (*DiffSection) Line ¶
func (s *DiffSection) Line(typ DiffLineType, line int) *DiffLine
Line returns a specific line by given type and line number in a section.
func (*DiffSection) NumLines ¶ added in v1.0.0
func (s *DiffSection) NumLines() int
NumLines returns the number of lines in the section.
type Entries ¶
type Entries []*TreeEntry
Entries is a sortable list of tree entries.
func (Entries) CommitsInfo ¶ added in v1.0.0
func (es Entries) CommitsInfo(commit *Commit, opts ...CommitsInfoOptions) ([]*EntryCommitInfo, error)
CommitsInfo returns a list of commit information for these tree entries in the state of given commit and subpath. It takes advantages of concurrency to speed up the process. The returned list has the same number of items as tree entries, so the caller can access them via slice indices.
type EntryCommitInfo ¶ added in v1.0.0
type EntryCommitInfo struct {
// contains filtered or unexported fields
}
EntryCommitInfo contains a tree entry with its commit information.
type FetchOptions ¶ added in v1.0.0
type FetchOptions struct { // Indicates whether to prune during fetching. Prune bool // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
FetchOptions contains optional arguments for fetching repository updates. Docs: https://git-scm.com/docs/git-fetch
type FsckOptions ¶ added in v1.0.0
type FsckOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
FsckOptions contains optional arguments for verifying the objects. Docs: https://git-scm.com/docs/git-fsck
type Hook ¶
type Hook struct {
// contains filtered or unexported fields
}
Hook contains information of a Git hook.
func (*Hook) IsSample ¶ added in v1.0.0
IsSample returns true if the content is read from the sample hook.
type InitOptions ¶ added in v1.0.0
type InitOptions struct { // Indicates whether the repository should be initialized in bare format. Bare bool // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
InitOptions contains optional arguments for initializing a repository. Docs: https://git-scm.com/docs/git-init
type LatestCommitTimeOptions ¶ added in v1.0.0
type LatestCommitTimeOptions struct { // To get the latest commit time of the branch. When not set, it checks all branches. Branch string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
LatestCommitTimeOptions contains optional arguments for getting the latest commit time.
type LogOptions ¶ added in v1.0.0
type LogOptions struct { // The maximum number of commits to output. MaxCount int // The number commits skipped before starting to show the commit output. Skip int // To only show commits since the time. Since time.Time // The regular expression to filter commits by their messages. GrepPattern string // Indicates whether to ignore letter case when match the regular expression. RegexpIgnoreCase bool // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
LogOptions contains optional arguments for listing commits. Docs: https://git-scm.com/docs/git-log
type LsRemoteOptions ¶ added in v1.0.0
type LsRemoteOptions struct { // Indicates whether include heads. Heads bool // Indicates whether include tags. Tags bool // Indicates whether to not show peeled tags or pseudorefs. Refs bool // The list of patterns to filter results. Patterns []string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
LsRemoteOptions contains arguments for listing references in a remote repository. Docs: https://git-scm.com/docs/git-ls-remote
type LsTreeOptions ¶ added in v1.0.0
type LsTreeOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
LsTreeOptions contains optional arguments for listing trees. Docs: https://git-scm.com/docs/git-ls-tree
type MergeBaseOptions ¶ added in v1.0.0
type MergeBaseOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
MergeBaseOptions contains optional arguments for getting merge base. // Docs: https://git-scm.com/docs/git-merge-base
type MoveOptions ¶ added in v1.0.0
type MoveOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
MoveOptions contains optional arguments for moving a file, a directory, or a symlink. Docs: https://git-scm.com/docs/git-mv
type NameStatus ¶ added in v1.0.0
NameStatus contains name status of a commit.
func RepoShowNameStatus ¶ added in v1.0.0
func RepoShowNameStatus(repoPath, rev string, opts ...ShowNameStatusOptions) (*NameStatus, error)
RepoShowNameStatus returns name status of given revision of the repository in given path.
type ObjectType ¶
type ObjectType string
ObjectType is the type of a Git objet.
const ( ObjectCommit ObjectType = "commit" ObjectTree ObjectType = "tree" ObjectBlob ObjectType = "blob" ObjectTag ObjectType = "tag" )
A list of object types.
type PullOptions ¶ added in v1.0.0
type PullOptions struct { // Indicates whether to rebased during pulling. Rebase bool // Indicates whether to pull from all remotes. All bool // The remote to pull updates from when All=false. Remote string // The branch to pull updates from when All=false and Remote is supplied. Branch string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
PullOptions contains optional arguments for pulling repository updates. Docs: https://git-scm.com/docs/git-pull
type PushOptions ¶ added in v1.0.0
type PushOptions struct { // The environment variables set for the push. Envs []string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
PushOptions contains optional arguments for pushing repository changes. Docs: https://git-scm.com/docs/git-push
type RawDiffFormat ¶ added in v1.0.0
type RawDiffFormat string
RawDiffFormat is the format of a raw diff.
const ( RawDiffNormal RawDiffFormat = "diff" RawDiffPatch RawDiffFormat = "patch" )
type RawDiffOptions ¶ added in v1.0.0
type RawDiffOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
RawDiffOptions contains optional arguments for dumpping a raw diff. Docs: https://git-scm.com/docs/git-format-patch
type RemoveRemoteOptions ¶ added in v1.0.0
type RemoveRemoteOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
RemoveRemoteOptions contains arguments for removing a remote from the repository. Docs: https://git-scm.com/docs/git-remote#Documentation/git-remote.txt-emremoveem
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
Repository contains information of a Git repository.
func Open ¶ added in v1.0.0
func Open(repoPath string) (*Repository, error)
Open opens the repository at the given path. It returns an os.ErrNotExist if the path does not exist.
func (*Repository) Add ¶ added in v1.0.0
func (r *Repository) Add(opts ...AddOptions) error
Add adds local changes to index for the repository.
func (*Repository) AddRemote ¶
func (r *Repository) AddRemote(name, url string, opts ...AddRemoteOptions) error
AddRemote adds a new remote to the repository.
func (*Repository) CatFileCommit ¶ added in v1.0.0
func (r *Repository) CatFileCommit(rev string, opts ...CatFileCommitOptions) (*Commit, error)
CatFileCommit returns the commit corresponding to the given revision of the repository. The revision could be a commit ID or refspec.
func (*Repository) Checkout ¶ added in v1.0.0
func (r *Repository) Checkout(branch string, opts ...CheckoutOptions) error
Checkout checks out to given branch for the repository.
func (*Repository) Commit ¶ added in v1.0.0
func (r *Repository) Commit(committer *Signature, message string, opts ...CommitOptions) error
Commit commits local changes with given author, committer and message for the repository.
func (*Repository) CommitByRevision ¶ added in v1.0.0
func (r *Repository) CommitByRevision(rev string, opts ...CommitByRevisionOptions) (*Commit, error)
CommitByRevisionOptions returns a commit by given revision.
func (*Repository) CommitsByPage ¶ added in v1.0.0
func (r *Repository) CommitsByPage(rev string, page, size int, opts ...CommitsByPageOptions) ([]*Commit, error)
CommitsByPage returns a paginated list of commits in the state of given revision. The pagination starts from the newest to the oldest commit.
func (*Repository) CommitsSince ¶ added in v1.0.0
func (r *Repository) CommitsSince(rev string, since time.Time, opts ...CommitsSinceOptions) ([]*Commit, error)
CommitsSince returns a list of commits since given time. The returned list is in reverse chronological order.
func (*Repository) CountObjects ¶ added in v1.0.0
func (r *Repository) CountObjects(opts ...CountObjectsOptions) (*CountObject, error)
CountObjects returns disk usage report of the repository.
func (*Repository) CreateTag ¶
func (r *Repository) CreateTag(name, rev string, opts ...CreateTagOptions) error
CreateTag creates a new tag on given revision.
func (*Repository) DeleteBranch ¶
func (r *Repository) DeleteBranch(name string, opts ...DeleteBranchOptions) error
DeleteBranch deletes the branch from the repository.
func (*Repository) DeleteTag ¶
func (r *Repository) DeleteTag(name string, opts ...DeleteTagOptions) error
DeleteTag deletes a tag from the repository.
func (*Repository) Diff ¶ added in v1.0.0
func (r *Repository) Diff(rev string, maxFiles, maxFileLines, maxLineChars int, opts ...DiffOptions) (*Diff, error)
Diff returns a parsed diff object between given commits of the repository.
func (*Repository) DiffBinary ¶ added in v1.0.0
func (r *Repository) DiffBinary(base, head string, opts ...DiffBinaryOptions) ([]byte, error)
DiffBinary returns binary patch between base and head revisions that could be used for git-apply.
func (*Repository) DiffNameOnly ¶ added in v1.0.0
func (r *Repository) DiffNameOnly(base, head string, opts ...DiffNameOnlyOptions) ([]string, error)
DiffNameOnly returns a list of changed files between base and head revisions of the repository.
func (*Repository) Fetch ¶ added in v1.0.0
func (r *Repository) Fetch(opts ...FetchOptions) error
Fetch fetches updates for the repository.
func (*Repository) Fsck ¶ added in v1.0.0
func (r *Repository) Fsck(opts ...FsckOptions) error
Fsck verifies the connectivity and validity of the objects in the database for the repository.
func (*Repository) HasReference ¶ added in v1.0.0
func (r *Repository) HasReference(ref string, opts ...ShowRefVerifyOptions) bool
HasReference returns true if given reference exists in the repository. The reference must be given in full path, e.g. refs/heads/master
func (*Repository) Hook ¶ added in v1.0.0
func (r *Repository) Hook(name HookName) (*Hook, error)
Hook returns a Git hook by given name in the repository. It returns an os.ErrNotExist if both active and sample hook do not exist.
func (*Repository) Hooks ¶
func (r *Repository) Hooks() ([]*Hook, error)
Hooks returns a list of Git hooks found in the repository. It may return an empty slice when no hooks found.
func (*Repository) LatestCommitTime ¶ added in v1.0.0
func (r *Repository) LatestCommitTime(opts ...LatestCommitTimeOptions) (time.Time, error)
LatestCommitTime returns the time of latest commit of the repository.
func (*Repository) Log ¶ added in v1.0.0
func (r *Repository) Log(rev string, opts ...LogOptions) ([]*Commit, error)
Log returns a list of commits in the state of given revision. The returned list is in reverse chronological order.
func (*Repository) LsTree ¶ added in v1.0.0
func (r *Repository) LsTree(rev string, opts ...LsTreeOptions) (*Tree, error)
LsTree returns the tree object in the repository by given revision.
func (*Repository) MergeBase ¶ added in v1.0.0
func (r *Repository) MergeBase(base, head string, opts ...MergeBaseOptions) (string, error)
MergeBase returns merge base between base and head revisions.
func (*Repository) Move ¶ added in v1.0.0
func (r *Repository) Move(src, dst string, opts ...MoveOptions) error
Move moves a file, a directory, or a symlink file or directory from source to destination.
func (*Repository) NewHook ¶ added in v1.0.0
func (r *Repository) NewHook(name HookName) *Hook
NewHook creates and returns a new hook with given name. Update method must be called to actually save the hook to disk.
func (*Repository) Path ¶
func (r *Repository) Path() string
Path returns the path of the repository.
func (*Repository) Pull ¶ added in v1.0.0
func (r *Repository) Pull(opts ...PullOptions) error
Pull pulls updates for the repository.
func (*Repository) Push ¶ added in v1.0.0
func (r *Repository) Push(remote, branch string, opts ...PushOptions) error
Push pushs local changes to given remote and branch for the repository.
func (*Repository) RawDiff ¶ added in v1.0.0
func (r *Repository) RawDiff(rev string, diffType RawDiffFormat, w io.Writer, opts ...RawDiffOptions) error
RawDiff dumps diff of repository in given revision directly to given io.Writer.
func (*Repository) RemoveRemote ¶
func (r *Repository) RemoveRemote(name string, opts ...RemoveRemoteOptions) error
RemoveRemote removes a remote from the repository.
func (*Repository) Reset ¶ added in v1.0.0
func (r *Repository) Reset(rev string, opts ...ResetOptions) error
Reset resets working tree to given revision for the repository.
func (*Repository) RevList ¶ added in v1.0.0
func (r *Repository) RevList(refspecs []string, opts ...RevListOptions) ([]*Commit, error)
RevList returns a list of commits based on given refspecs in reverse chronological order.
func (*Repository) RevListCount ¶ added in v1.0.0
func (r *Repository) RevListCount(refspecs []string, opts ...RevListCountOptions) (int64, error)
RevListCount returns number of total commits up to given refspec of the repository.
func (*Repository) RevParse ¶ added in v1.0.0
func (r *Repository) RevParse(rev string, opts ...RevParseOptions) (string, error)
RevParse returns full length (40) commit ID by given revision in the repository.
func (*Repository) SearchCommits ¶ added in v1.0.0
func (r *Repository) SearchCommits(rev, pattern string, opts ...SearchCommitsOptions) ([]*Commit, error)
SearchCommits searches commit message with given pattern in the state of given revision. The returned list is in reverse chronological order.
func (*Repository) ShowNameStatus ¶ added in v1.0.0
func (r *Repository) ShowNameStatus(rev string, opts ...ShowNameStatusOptions) (*NameStatus, error)
ShowNameStatus returns name status of given revision of the repository.
func (*Repository) ShowRef ¶ added in v1.0.0
func (r *Repository) ShowRef(opts ...ShowRefOptions) ([]*Reference, error)
ShowRef returns a list of references in the repository.
func (*Repository) ShowRefVerify ¶ added in v1.0.0
func (r *Repository) ShowRefVerify(ref string, opts ...ShowRefVerifyOptions) (string, error)
ShowRefVerify returns the commit ID of given reference if it exists in the repository.
func (*Repository) SymbolicRef ¶ added in v1.0.0
func (r *Repository) SymbolicRef(opts ...SymbolicRefOptions) (string, error)
SymbolicRef returns the reference name pointed by the symbolic ref. It returns an empty string and nil error when doing set operation.
func (*Repository) Tag ¶ added in v1.0.0
func (r *Repository) Tag(refspec string, opts ...TagOptions) (*Tag, error)
Tag returns a Git tag by given refspec.
func (*Repository) Tags ¶ added in v1.0.0
func (r *Repository) Tags(opts ...TagsOptions) ([]string, error)
Tags returns a list of tags in the repository.
type ResetOptions ¶ added in v1.0.0
type ResetOptions struct { // Indicates whether to perform a hard reset. Hard bool // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
ResetOptions contains optional arguments for resetting a branch. Docs: https://git-scm.com/docs/git-reset
type RevListCountOptions ¶ added in v1.0.0
type RevListCountOptions struct { // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
RevListCountOptions contains optional arguments for counting commits. Docs: https://git-scm.com/docs/git-rev-list#Documentation/git-rev-list.txt---count
type RevListOptions ¶ added in v1.0.0
type RevListOptions struct { // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
RevListOptions contains optional arguments for listing commits. Docs: https://git-scm.com/docs/git-rev-list
type RevParseOptions ¶ added in v1.0.0
type RevParseOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
RevParseOptions contains optional arguments for parsing revision. Docs: https://git-scm.com/docs/git-rev-parse
type SHA1 ¶ added in v1.0.0
type SHA1 struct {
// contains filtered or unexported fields
}
SHA1 is the SHA-1 hash of a Git object.
func MustIDFromString ¶
MustIDFromString always returns a new sha from a ID with no validation of input.
func NewIDFromString ¶
NewIDFromString returns a new SHA1 from a ID string of length 40.
type SearchCommitsOptions ¶ added in v1.0.0
type SearchCommitsOptions struct { // The maximum number of commits to output. MaxCount int // The relative path of the repository. Path string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
SearchCommitsOptions contains optional arguments for searching commits. Docs: https://git-scm.com/docs/git-log
type ShowNameStatusOptions ¶ added in v1.0.0
type ShowNameStatusOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
ShowNameStatusOptions contains optional arguments for showing name status. Docs: https://git-scm.com/docs/git-show#Documentation/git-show.txt---name-status
type ShowRefOptions ¶ added in v1.0.0
type ShowRefOptions struct { // Indicates whether to include heads. Heads bool // Indicates whether to include tags. Tags bool // The list of patterns to filter results. Patterns []string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
ShowRefOptions contains optional arguments for listing references. Docs: https://git-scm.com/docs/git-show-ref
type ShowRefVerifyOptions ¶ added in v1.0.0
type ShowRefVerifyOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
ShowRefVerifyOptions contains optional arguments for verifying a reference. Docs: https://git-scm.com/docs/git-show-ref#Documentation/git-show-ref.txt---verify
type Signature ¶
type Signature struct { // The name of the person. Name string // The email address. Email string // The time of the signurate. When time.Time }
Signature represents a author or committer.
type SteamParseDiffResult ¶ added in v1.0.0
SteamParseDiffResult contains results of streaming parsing a diff.
type Submodule ¶ added in v1.0.0
type Submodule struct {
// contains filtered or unexported fields
}
Submodule contains information of a Git submodule.
type Submodules ¶ added in v1.0.0
type Submodules = *objectCache
Submodules contains information of submodules.
type SymbolicRefOptions ¶ added in v1.0.0
type SymbolicRefOptions struct { // The name of the symbolic ref. When not set, default ref "HEAD" is used. Name string // The name of the reference. When set, it will be used to update the symbolic ref. Ref string // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
SymbolicRefOptions contains optional arguments for get and set symbolic ref.
type Tag ¶
type Tag struct {
// contains filtered or unexported fields
}
Tag contains information of a Git tag.
func (*Tag) Commit ¶
func (t *Tag) Commit(opts ...CatFileCommitOptions) (*Commit, error)
Commit returns the underlying commit of the tag.
type TagOptions ¶ added in v1.0.0
type TagOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
TagOptions contains optional arguments for getting a tag. Docs: https://git-scm.com/docs/git-cat-file
type TagsOptions ¶ added in v1.0.0
type TagsOptions struct { // The timeout duration before giving up for each shell command execution. // The default timeout duration will be used when not supplied. Timeout time.Duration }
TagsOptions contains optional arguments for listing tags. Docs: https://git-scm.com/docs/git-tag#Documentation/git-tag.txt---list
type Tree ¶
type Tree struct {
// contains filtered or unexported fields
}
Tree represents a flat directory listing in Git.
func (*Tree) Blob ¶ added in v1.0.0
func (t *Tree) Blob(subpath string, opts ...LsTreeOptions) (*Blob, error)
Blob returns the blob object by given subpath of the tree.
func (*Tree) Entries ¶ added in v1.0.0
func (t *Tree) Entries(opts ...LsTreeOptions) (Entries, error)
Entries returns all entries of the tree.
type TreeEntry ¶
type TreeEntry struct {
// contains filtered or unexported fields
}
func (*TreeEntry) IsCommit ¶ added in v1.0.0
IsCommit returns true if the entry is a commit (i.e. a submodule).
func (*TreeEntry) IsSymlink ¶ added in v1.0.0
IsSymlink returns true if the entry is a symbolic link.
func (*TreeEntry) IsTree ¶ added in v1.0.0
IsTree returns tree if the entry itself is another tree (i.e. a directory).
func (*TreeEntry) Type ¶
func (e *TreeEntry) Type() ObjectType
Type returns the object type of the entry.
Source Files ¶
- blob.go
- command.go
- commit.go
- commit_archive.go
- commit_submodule.go
- diff.go
- error.go
- git.go
- hook.go
- object.go
- repo.go
- repo_commit.go
- repo_diff.go
- repo_hook.go
- repo_pull.go
- repo_reference.go
- repo_remote.go
- repo_tag.go
- repo_tree.go
- sha1.go
- signature.go
- submodule.go
- tag.go
- tree.go
- tree_blob.go
- tree_entry.go
- utils.go