package module
Version: v0.0.0-...-9f607e8 Latest Latest

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

Go to latest
Published: Aug 6, 2019 License: MIT Imports: 21 Imported by: 0


Git Module Build Status

Package git-module is a Go module for Git access through shell commands.


  • Go version must be at least 1.4.
  • Git version must be no less than 1.7.1, and greater than or equal to 1.8.3 is recommended.
  • For Windows users, try use as new a version as possible.


This project is under the MIT License. See the LICENSE file for the full license text.




View Source
const BRANCH_PREFIX = "refs/heads/"
View Source
const DEFAULT_TIMEOUT = 60 * time.Second
View Source
const EMPTY_SHA = "0000000000000000000000000000000000000000"
View Source
const REMOTE_PREFIX = "refs/remotes/"
View Source
const TAG_PREFIX = "refs/tags/"


View Source
var (
	// Debug enables verbose logging on everything.
	// This should be false in case Gogs starts in SSH mode.
	Debug  = false
	Prefix = "[git-module] "
View Source
var (
	// Direcotry of hook and sample files. Can be changed to "custom_hooks" for very purpose.
	HookDir       = "hooks"
	HookSampleDir = HookDir
	// HookNames is a list of Git server hooks' name that are supported.
	HookNames = []string{
View Source
var DefaultCommitsPageSize = 30
View Source
var (
	ErrNotValidHook = errors.New("not a valid Git hook")


func AddChanges

func AddChanges(repoPath string, all bool, files ...string) error

AddChanges marks local changes to be ready for commit.

func BinVersion

func BinVersion() (string, error)

Version returns current Git version from shell.

func Checkout

func Checkout(repoPath string, opts CheckoutOptions) error

Checkout checkouts a branch

func Clone

func Clone(from, to string, opts CloneRepoOptions) (err error)

Clone clones 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 CommitsCount

func CommitsCount(repoPath, revision string) (int64, error)

CommitsCount returns number of total commits of until given revision.

func DeleteBranch

func DeleteBranch(repoPath, name string, opts DeleteBranchOptions) error

DeleteBranch deletes a branch from given repository path.

func Fetch

func Fetch(repoPath string, opts FetchRemoteOptions) error

Fetch fetches changes from remotes without merging.

func Fsck

func Fsck(repoPath string, timeout time.Duration, args ...string) error

Fsck verifies the connectivity and validity of the objects in the database

func GetFullCommitID

func GetFullCommitID(repoPath, shortID string) (string, error)

GetFullCommitID returns full length (40) of commit ID by given short SHA in a repository.

func GetLatestCommitDate

func GetLatestCommitDate(repoPath, branch string) (time.Time, error)

GetLatestCommitDate returns the date of latest commit of repository. If branch is empty, it returns the latest commit across all branches.

func GetRawDiff

func GetRawDiff(repoPath, commitID string, diffType RawDiffType, writer io.Writer) error

GetRawDiff dumps diff results of repository in given commit ID to io.Writer.

func InitRepository

func InitRepository(repoPath string, bare bool) error

InitRepository initializes a new Git repository.

func IsBranchExist

func IsBranchExist(repoPath, name string) bool

IsBranchExist returns true if given branch exists in the repository.

func IsErrExecTimeout

func IsErrExecTimeout(err error) bool

func IsErrNoMergeBase

func IsErrNoMergeBase(err error) bool

func IsErrNotExist

func IsErrNotExist(err error) bool

func IsErrUnsupportedVersion

func IsErrUnsupportedVersion(err error) bool

func IsReferenceExist

func IsReferenceExist(repoPath, name string) bool

IsReferenceExist returns true if given reference exists in the repository.

func IsRepoURLAccessible

func IsRepoURLAccessible(opts NetworkOptions) bool

IsRepoURLAccessible checks if given repository URL is accessible.

func IsTagExist

func IsTagExist(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 MoveFile

func MoveFile(repoPath, oldTreeName, newTreeName string) error

MoveFile moves a file to another file or directory.

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 NewID

func NewID(b []byte) (sha1, error)

NewID creates a new sha1 from a [20]byte array.

func NewIDFromString

func NewIDFromString(s string) (sha1, error)

NewIDFromString creates a new sha1 from a ID string of length 40.

func Pull

func Pull(repoPath string, opts PullRemoteOptions) error

Pull pulls changes from remotes.

func Push

func Push(repoPath, remote, branch string) error

Push pushs local commits to given remote branch.

func PushWithEnvs

func PushWithEnvs(repoPath, remote, branch string, envs []string) error

PushWithEnvs pushs local commits to given remote branch with given environment variables.

func RefEndName

func RefEndName(refStr string) string

func ResetHEAD

func ResetHEAD(repoPath string, hard bool, revision string) error

ResetHEAD resets HEAD to given revision or head of branch.

func UnescapeChars

func UnescapeChars(in []byte) []byte

UnescapeChars reverses escaped characters.

func Version

func Version() string


type ArchiveType

type ArchiveType int
const (
	ZIP ArchiveType = iota + 1

type Blob

type Blob struct {
	// contains filtered or unexported fields

Blob represents a Git object.

func (*Blob) Data

func (b *Blob) Data() (io.Reader, error)

Data gets content of blob all at once and wrap it as io.Reader. This can be very slow and memory consuming for huge content.

func (*Blob) DataPipeline

func (b *Blob) DataPipeline(stdout, stderr io.Writer) error

type Branch

type Branch struct {
	Name string
	Path string

Branch represents a Git branch.

type CheckoutOptions

type CheckoutOptions struct {
	Branch    string
	OldBranch string
	Timeout   time.Duration

type CloneRepoOptions

type CloneRepoOptions struct {
	Mirror  bool
	Bare    bool
	Quiet   bool
	Branch  string
	Timeout time.Duration

type Command

type Command struct {
	// contains filtered or unexported fields

Command represents a command with its subcommands or arguments.

func NewCommand

func NewCommand(args ...string) *Command

NewCommand creates and returns a new Git Command based on given command and arguments.

func (*Command) AddArguments

func (c *Command) AddArguments(args ...string) *Command

AddArguments adds new argument(s) to the command.

func (*Command) AddEnvs

func (c *Command) AddEnvs(envs ...string) *Command

AddEnvs adds new environment variables to the command.

func (*Command) Run

func (c *Command) Run() (string, error)

Run executes the command in defualt working directory and returns stdout in string and error (combined with stderr).

func (*Command) RunInDir

func (c *Command) RunInDir(dir string) (string, error)

RunInDir executes the command in given directory and returns stdout in string and error (combined with stderr).

func (*Command) RunInDirBytes

func (c *Command) RunInDirBytes(dir string) ([]byte, error)

RunInDirBytes executes the command in given directory and returns stdout in []byte and error (combined with stderr).

func (*Command) RunInDirPipeline

func (c *Command) RunInDirPipeline(dir string, stdout, stderr io.Writer) error

RunInDirPipeline executes the command in given directory, it pipes stdout and stderr to given io.Writer.

func (*Command) RunInDirTimeout

func (c *Command) RunInDirTimeout(timeout time.Duration, dir string) ([]byte, error)

RunInDirTimeout executes the command in given directory with given timeout, and returns stdout in []byte and error (combined with stderr).

func (*Command) RunInDirTimeoutPipeline

func (c *Command) RunInDirTimeoutPipeline(timeout time.Duration, dir string, stdout, stderr io.Writer) error

RunInDirTimeoutPipeline executes the command in given directory with given timeout, it pipes stdout and stderr to given io.Writer.

func (*Command) RunTimeout

func (c *Command) RunTimeout(timeout time.Duration) (string, error)

RunTimeout executes the command in defualt working directory with given timeout, and returns stdout in string and error (combined with stderr).

func (*Command) String

func (c *Command) String() string

type Commit

type Commit struct {
	ID            sha1 // The ID of this commit object
	Author        *Signature
	Committer     *Signature
	CommitMessage string
	// contains filtered or unexported fields

Commit represents a git commit.

func (*Commit) CommitsBefore

func (c *Commit) CommitsBefore() (*list.List, error)

func (*Commit) CommitsBeforeLimit

func (c *Commit) CommitsBeforeLimit(num int) (*list.List, error)

func (*Commit) CommitsBeforeUntil

func (c *Commit) CommitsBeforeUntil(commitID string) (*list.List, error)

func (*Commit) CommitsByRange

func (c *Commit) CommitsByRange(page int) (*list.List, error)

func (*Commit) CommitsByRangeSize

func (c *Commit) CommitsByRangeSize(page, size int) (*list.List, error)

func (*Commit) CommitsCount

func (c *Commit) CommitsCount() (int64, error)

func (*Commit) CreateArchive

func (c *Commit) CreateArchive(target string, archiveType ArchiveType) error

func (*Commit) FileStatus

func (c *Commit) FileStatus() (*CommitFileStatus, error)

FileStatus returns file status of commit.

func (*Commit) GetCommitByPath

func (c *Commit) GetCommitByPath(relpath string) (*Commit, error)

GetCommitByPath return the commit of relative path object.

func (*Commit) GetFilesChangedSinceCommit

func (c *Commit) GetFilesChangedSinceCommit(pastCommit string) ([]string, error)

func (*Commit) GetSubModule

func (c *Commit) GetSubModule(entryname string) (*SubModule, error)

func (*Commit) GetSubModules

func (c *Commit) GetSubModules() (*objectCache, error)

func (*Commit) IsImageFile

func (c *Commit) IsImageFile(name string) bool

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(keyword string) (*list.List, error)

func (*Commit) Summary

func (c *Commit) Summary() string

Summary returns first line of commit message.

type CommitChangesOptions

type CommitChangesOptions struct {
	Committer *Signature
	Author    *Signature
	Message   string

type CommitFileStatus

type CommitFileStatus struct {
	Added    []string
	Removed  []string
	Modified []string

CommitFileStatus represents status of files in a commit.

func GetCommitFileStatus

func GetCommitFileStatus(repoPath, commitID string) (*CommitFileStatus, error)

GetCommitFileStatus returns file status of commit in given repository.

func NewCommitFileStatus

func NewCommitFileStatus() *CommitFileStatus

type CountObject

type CountObject struct {
	Count         int64
	Size          int64
	InPack        int64
	Packs         int64
	SizePack      int64
	PrunePackable int64
	Garbage       int64
	SizeGarbage   int64

CountObject represents disk usage report of Git repository.

func GetRepoSize

func GetRepoSize(repoPath string) (*CountObject, error)

GetRepoSize returns disk usage report of repository in given path.

type DeleteBranchOptions

type DeleteBranchOptions struct {
	Force bool

Option(s) for delete branch

type Diff

type Diff struct {
	TotalAddition, TotalDeletion int
	Files                        []*DiffFile
	IsIncomplete                 bool

Diff contains all information of a specific diff output.

func GetDiffCommit

func GetDiffCommit(repoPath, commitID string, maxLines, maxLineCharacteres, maxFiles int) (*Diff, error)

GetDiffCommit returns a parsed diff object of given commit.

func GetDiffRange

func GetDiffRange(repoPath, beforeCommitID, afterCommitID string, maxLines, maxLineCharacteres, maxFiles int) (*Diff, error)

GetDiffRange returns a parsed diff object between given commits.

func ParsePatch

func ParsePatch(done chan<- error, maxLines, maxLineCharacteres, maxFiles int, reader io.Reader) *Diff

ParsePatch takes a reader and parses everything it receives in diff format.

func (*Diff) NumFiles

func (diff *Diff) NumFiles() int

type DiffFile

type DiffFile struct {
	Name               string
	OldName            string
	Index              string // 40-byte SHA, Changed/New: new SHA; Deleted: old SHA
	Addition, Deletion int
	Type               DiffFileType
	IsCreated          bool
	IsDeleted          bool
	IsBin              bool
	IsRenamed          bool
	IsSubmodule        bool
	Sections           []*DiffSection
	IsIncomplete       bool

DiffFile represents a file in diff.

func (*DiffFile) GetType

func (diffFile *DiffFile) GetType() int

func (*DiffFile) NumSections

func (diffFile *DiffFile) NumSections() int

type DiffFileType

type DiffFileType uint8

DiffFileType represents the file status in diff.

const (
	DIFF_FILE_ADD DiffFileType = iota + 1

type DiffLine

type DiffLine struct {
	LeftIdx  int
	RightIdx int
	Type     DiffLineType
	Content  string

DiffLine represents a line in diff.

func (*DiffLine) GetType

func (d *DiffLine) GetType() int

type DiffLineType

type DiffLineType uint8

DiffLineType represents the type of a line in diff.

const (
	DIFF_LINE_PLAIN DiffLineType = iota + 1

type DiffSection

type DiffSection struct {
	Name  string
	Lines []*DiffLine

DiffSection represents a section in diff.

func (*DiffSection) Line

func (diffSection *DiffSection) Line(lineType DiffLineType, idx int) *DiffLine

Line returns a specific line by type (add or del) and file line number from a section.

type Entries

type Entries []*TreeEntry

func (Entries) GetCommitsInfo

func (tes Entries) GetCommitsInfo(commit *Commit, treePath string) ([][]interface{}, error)

GetCommitsInfo takes advantages of concurrency to speed up getting information of all commits that are corresponding to these entries. This method will automatically choose the right number of goroutine (concurrency) to use related of the host CPU.

func (Entries) GetCommitsInfoWithCustomConcurrency

func (tes Entries) GetCommitsInfoWithCustomConcurrency(commit *Commit, treePath string, maxConcurrency int) ([][]interface{}, error)

GetCommitsInfoWithCustomConcurrency takes advantages of concurrency to speed up getting information of all commits that are corresponding to these entries. If the given maxConcurrency is negative or equal to zero: the right number of goroutine (concurrency) to use will be choosen related of the host CPU.

func (Entries) Len

func (tes Entries) Len() int

func (Entries) Less

func (tes Entries) Less(i, j int) bool

func (Entries) Sort

func (tes Entries) Sort()

func (Entries) Swap

func (tes Entries) Swap(i, j int)

type EntryMode

type EntryMode int
const (
	ENTRY_MODE_BLOB    EntryMode = 0100644
	ENTRY_MODE_EXEC    EntryMode = 0100755
	ENTRY_MODE_SYMLINK EntryMode = 0120000
	ENTRY_MODE_COMMIT  EntryMode = 0160000
	ENTRY_MODE_TREE    EntryMode = 0040000

There are only a few file modes in Git. They look like unix file modes, but they can only be one of these.

type ErrExecTimeout

type ErrExecTimeout struct {
	Duration time.Duration

func (ErrExecTimeout) Error

func (err ErrExecTimeout) Error() string

type ErrNoMergeBase

type ErrNoMergeBase struct{}

func (ErrNoMergeBase) Error

func (err ErrNoMergeBase) Error() string

type ErrNotExist

type ErrNotExist struct {
	ID      string
	RelPath string

func (ErrNotExist) Error

func (err ErrNotExist) Error() string

type ErrUnsupportedVersion

type ErrUnsupportedVersion struct {
	Required string

func (ErrUnsupportedVersion) Error

func (err ErrUnsupportedVersion) Error() string

type FetchRemoteOptions

type FetchRemoteOptions struct {
	Prune   bool
	Timeout time.Duration

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.

func ListHooks

func ListHooks(repoPath string) (_ []*Hook, err error)

ListHooks returns a list of Git hooks of given repository.

func (*Hook) Name

func (h *Hook) Name() string

func (*Hook) Update

func (h *Hook) Update() error

Update updates content hook file.

type NetworkOptions

type NetworkOptions struct {
	URL     string
	Timeout time.Duration

type ObjectType

type ObjectType string
const (
	OBJECT_COMMIT ObjectType = "commit"
	OBJECT_TREE   ObjectType = "tree"
	OBJECT_BLOB   ObjectType = "blob"
	OBJECT_TAG    ObjectType = "tag"

type PullRemoteOptions

type PullRemoteOptions struct {
	All     bool
	Rebase  bool
	Remote  string
	Branch  string
	Timeout time.Duration

type PullRequestInfo

type PullRequestInfo struct {
	MergeBase string
	Commits   *list.List
	NumFiles  int

PullRequestInfo represents needed information for a pull request.

type RawDiffType

type RawDiffType string

RawDiffType represents the type of raw diff format.

const (
	RAW_DIFF_NORMAL RawDiffType = "diff"
	RAW_DIFF_PATCH  RawDiffType = "patch"

type Repository

type Repository struct {
	Path string
	// contains filtered or unexported fields

Repository represents a Git repository.

func OpenRepository

func OpenRepository(repoPath string) (*Repository, error)

OpenRepository opens the repository at the given path.

func (*Repository) AddRemote

func (repo *Repository) AddRemote(name, url string, fetch bool) error

AddRemote adds a new remote to repository.

func (*Repository) CommitsAfterDate

func (repo *Repository) CommitsAfterDate(date string) (*list.List, error)

CommitsAfterDate returns a list of commits which committed after given date. The format of date should be in RFC3339.

func (*Repository) CommitsBetween

func (repo *Repository) CommitsBetween(last *Commit, before *Commit) (*list.List, error)

CommitsBetween returns a list that contains commits between [last, before).

func (*Repository) CommitsBetweenIDs

func (repo *Repository) CommitsBetweenIDs(last, before string) (*list.List, error)

func (*Repository) CommitsByFileAndRange

func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (*list.List, error)

func (*Repository) CommitsByFileAndRangeSize

func (repo *Repository) CommitsByFileAndRangeSize(revision, file string, page, size int) (*list.List, error)

func (*Repository) CommitsByRange

func (repo *Repository) CommitsByRange(revision string, page int) (*list.List, error)

func (*Repository) CommitsByRangeSize

func (repo *Repository) CommitsByRangeSize(revision string, page, size int) (*list.List, error)

func (*Repository) CommitsCountBetween

func (repo *Repository) CommitsCountBetween(start, end string) (int64, error)

func (*Repository) CreateTag

func (repo *Repository) CreateTag(name, revision string) error

func (*Repository) DeleteBranch

func (repo *Repository) DeleteBranch(name string, opts DeleteBranchOptions) error

DeleteBranch deletes a branch from repository.

func (*Repository) DeleteTag

func (repo *Repository) DeleteTag(name string) error

DeleteTag deletes a tag from the repository

func (*Repository) FileCommitsCount

func (repo *Repository) FileCommitsCount(revision, file string) (int64, error)

func (*Repository) FilesCountBetween

func (repo *Repository) FilesCountBetween(startCommitID, endCommitID string) (int, error)

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) GetBranches

func (repo *Repository) GetBranches() ([]string, error)

GetBranches returns all branches of the repository.

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) GetHEADBranch

func (repo *Repository) GetHEADBranch() (*Branch, error)

GetHEADBranch returns corresponding branch of HEAD.

func (*Repository) GetHook

func (repo *Repository) GetHook(name string) (*Hook, error)

func (*Repository) GetMergeBase

func (repo *Repository) GetMergeBase(base, head string) (string, error)

GetMergeBase checks and returns merge base of two branches.

func (*Repository) GetPatch

func (repo *Repository) GetPatch(base, head string) ([]byte, error)

GetPatch generates and returns patch data between given revisions.

func (*Repository) GetPullRequestInfo

func (repo *Repository) GetPullRequestInfo(basePath, baseBranch, headBranch string) (_ *PullRequestInfo, err error)

GetPullRequestInfo generates and returns pull request information between base and head branches of repositories.

func (*Repository) GetRemoteBranchCommit

func (repo *Repository) GetRemoteBranchCommit(name string) (*Commit, error)

GetRemoteBranchCommit returns the last commit of given remote branch.

func (*Repository) GetRemoteBranchCommitID

func (repo *Repository) GetRemoteBranchCommitID(name string) (string, error)

GetRemoteBranchCommitID returns last commit ID string of given remote branch.

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 returns the commit of given tag.

func (*Repository) GetTagCommitID

func (repo *Repository) GetTagCommitID(name string) (string, error)

GetTagCommitID returns last commit ID string of given tag.

func (*Repository) GetTags

func (repo *Repository) GetTags() ([]string, error)

GetTags returns all tags of the repository.

func (*Repository) GetTagsAfter

func (repo *Repository) GetTagsAfter(after string, limit int) (*TagsResult, error)

GetTagsAfter returns list of tags 'after' (exlusive) given tag.

func (*Repository) GetTree

func (repo *Repository) GetTree(idStr string) (*Tree, error)

Find the tree object in the repository.

func (*Repository) Hooks

func (repo *Repository) Hooks() ([]*Hook, error)

func (*Repository) IsBranchExist

func (repo *Repository) IsBranchExist(name string) bool

func (*Repository) IsTagExist

func (repo *Repository) IsTagExist(name string) bool

func (*Repository) RemoveRemote

func (repo *Repository) RemoveRemote(name string) error

RemoveRemote removes a remote from repository.

func (*Repository) SetDefaultBranch

func (repo *Repository) SetDefaultBranch(name string) error

SetDefaultBranch sets default branch of repository.

type Signature

type Signature struct {
	Email string
	Name  string
	When  time.Time

Signature represents the Author or Committer information.

type SubModule

type SubModule struct {
	Name string
	URL  string

type SubModuleFile

type SubModuleFile struct {
	// contains filtered or unexported fields

SubModuleFile represents a file with submodule type.

func NewSubModuleFile

func NewSubModuleFile(c *Commit, refURL, refID string) *SubModuleFile

func (*SubModuleFile) RefID

func (sf *SubModuleFile) RefID() string

RefID returns reference ID.

func (*SubModuleFile) RefURL

func (sf *SubModuleFile) RefURL(urlPrefix string, parentPath string) string

RefURL guesses and returns reference URL.

type Tag

type Tag struct {
	Name string
	ID   sha1

	Object  sha1 // The id of this commit object
	Type    string
	Tagger  *Signature
	Message string
	// contains filtered or unexported fields

Tag represents a Git tag.

func (*Tag) Commit

func (tag *Tag) Commit() (*Commit, error)

type TagsResult

type TagsResult struct {
	// Indicates whether results include the latest tag.
	HasLatest bool
	// If results do not include the latest tag, a indicator 'after' to go back.
	PreviousAfter string
	// Indicates whether results include the oldest tag.
	ReachEnd bool
	// List of returned tags.
	Tags []string

type Tree

type Tree struct {
	ID sha1
	// contains filtered or unexported fields

Tree represents a flat directory listing.

func NewTree

func NewTree(repo *Repository, id sha1) *Tree

func (*Tree) GetBlobByPath

func (t *Tree) GetBlobByPath(relpath string) (*Blob, error)

func (*Tree) GetTreeEntryByPath

func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error)

func (*Tree) ListEntries

func (t *Tree) ListEntries() (Entries, error)

ListEntries returns all entries of current tree.

func (*Tree) SubTree

func (t *Tree) SubTree(rpath string) (*Tree, error)

type TreeEntry

type TreeEntry struct {
	ID   sha1
	Type ObjectType
	// contains filtered or unexported fields

func (*TreeEntry) Blob

func (te *TreeEntry) Blob() *Blob

func (*TreeEntry) IsDir

func (te *TreeEntry) IsDir() bool
func (te *TreeEntry) IsLink() bool

func (*TreeEntry) IsSubModule

func (te *TreeEntry) IsSubModule() bool

func (*TreeEntry) Name

func (te *TreeEntry) Name() string

func (*TreeEntry) Size

func (te *TreeEntry) Size() int64

Jump to

Keyboard shortcuts

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