Documentation ¶
Overview ¶
Package GoGits - Git is a pure Go implementation of Git manipulation.
Index ¶
- Constants
- Variables
- func CreateBranch(repoPath, branchName, id string) error
- func CreateRef(head, repoPath, branchName, id string) error
- func CreateTag(repoPath, tagName, id string) error
- func IntToStr(n int) string
- func IsBranchExist(repoPath, branchName string) bool
- func IsSha1(sha1 string) bool
- func NewId(b []byte) (sha1, error)
- func NewIdFromString(s string) (sha1, error)
- func ParseModeType(modeString string) (EntryMode, ObjectType, error)
- func PrependObjectHeader(objectType ObjectType, r io.ReadSeeker) (io.Reader, error)
- func RefEndName(refStr string) string
- func ScanTreeEntry(data []byte, atEOF bool) (advance int, token []byte, err error)
- func StoreObjectSHA(objectType ObjectType, w io.Writer, r io.ReadSeeker) (sha1, error)
- func StrToInt(str string) (int, error)
- func UnpackRefs(repoPath string) error
- type ArchiveType
- type Blob
- type Commit
- func (c *Commit) CommitsBefore() (*list.List, error)
- func (c *Commit) CommitsBeforeUntil(commitId string) (*list.List, error)
- func (c *Commit) CommitsByRange(page int) (*list.List, error)
- func (c *Commit) CommitsCount() (int, error)
- func (c *Commit) CreateArchive(path string, archiveType ArchiveType) error
- func (c *Commit) GetCommitOfRelPath(relPath string) (*Commit, 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) (id sha1, err error)
- func (c *Commit) SearchCommits(keyword string) (*list.List, error)
- func (c *Commit) Summary() string
- func (c *Commit) TreeId() sha1
- type CommitComparator
- type CommitWalkCallback
- type Entries
- type EntryMode
- type HistoryWalkerAction
- type ObjectType
- type Repository
- func (repo *Repository) CommitsBefore(commitId string) (*list.List, error)
- func (repo *Repository) CommitsBetween(last *Commit, before *Commit) (*list.List, error)
- func (repo *Repository) CommitsByFileAndRange(branch, file string, page int) (*list.List, error)
- func (repo *Repository) CommitsByRange(commitId string, page int) (*list.List, error)
- func (repo *Repository) CommitsCount(commitId string) (int, error)
- func (repo *Repository) CreateBranch(branchName, idStr string) error
- func (repo *Repository) CreateTag(tagName, idStr string) error
- func (repo *Repository) FileCommitsCount(branch, file string) (int, error)
- func (repo *Repository) GetBranches() ([]string, error)
- func (repo *Repository) GetCommit(commitId string) (*Commit, error)
- func (repo *Repository) GetCommitIdOfBranch(branchName string) (string, error)
- func (repo *Repository) GetCommitIdOfTag(tagName string) (string, error)
- func (repo *Repository) GetCommitOfBranch(branchName string) (*Commit, error)
- func (repo *Repository) GetCommitOfRelPath(commitId, relPath string) (*Commit, error)
- func (repo *Repository) GetCommitOfTag(tagName string) (*Commit, error)
- func (repo *Repository) GetRawObject(id sha1, metaOnly bool) (ObjectType, int64, io.ReadCloser, error)
- func (repo *Repository) GetTag(tagName string) (*Tag, error)
- func (repo *Repository) GetTags() ([]string, error)
- func (repo *Repository) GetTree(idStr string) (*Tree, error)
- func (repo *Repository) HaveObject(idStr string) (found, packed bool, err error)
- func (repo *Repository) HaveObjectFromReadSeeker(objectType ObjectType, r io.ReadSeeker) (found bool, id sha1, err error)
- func (repo *Repository) IsBranchExist(branchName string) bool
- func (repo *Repository) IsTagExist(tagName string) bool
- func (repo *Repository) SearchCommits(commitId, keyword string) (*list.List, error)
- func (repo *Repository) StoreObjectLoose(objectType ObjectType, r io.ReadSeeker) (sha1, error)
- func (repo *Repository) TagPath(tagName string) string
- type Signature
- type Tag
- type Tree
- type TreeEntry
- func (te *TreeEntry) Blob() *Blob
- func (te *TreeEntry) EntryMode() EntryMode
- func (te *TreeEntry) IsDir() bool
- func (te *TreeEntry) ModTime() time.Time
- func (te *TreeEntry) Mode() (mode os.FileMode)
- func (te *TreeEntry) Name() string
- func (te *TreeEntry) Size() int64
- func (te *TreeEntry) Sys() interface{}
- type TreeScanner
- type TreeWalkCallback
Constants ¶
const ( ItemsPerPage = 50 ItemsPerSearch = 100 )
Variables ¶
var (
ErrBranchExisted = errors.New("branch has existed")
)
var (
ErrNotExist = errors.New("error not exist")
)
var (
IdNotExist = errors.New("sha1 id not exist")
)
var TreeEntryRe = regexp.MustCompile("^([0-9]+) ([^\x00]+)\x00")
Functions ¶
func CreateBranch ¶
func IsBranchExist ¶
func NewIdFromString ¶
Create a new sha1 from a Sha1 string of length 40.
func ParseModeType ¶
func ParseModeType(modeString string) (EntryMode, ObjectType, error)
func PrependObjectHeader ¶
func PrependObjectHeader(objectType ObjectType, r io.ReadSeeker) (io.Reader, error)
Add '<type> <size>\x00' to beginning of `r`.
func RefEndName ¶
func ScanTreeEntry ¶
func StoreObjectSHA ¶
func StoreObjectSHA( objectType ObjectType, w io.Writer, r io.ReadSeeker, ) (sha1, error)
Write an the object contents in `r` in compressed form to `w` and return the hash. Special case: if `w` is `ioutil.Discard`, the data is not compressed, since the data is not consumed anywhere.
func UnpackRefs ¶
UnpackRefs unpacks 'packed-refs' to git repository.
Types ¶
type Commit ¶
type Commit struct { Tree 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) CommitsBeforeUntil ¶
func (*Commit) CommitsCount ¶
func (*Commit) CreateArchive ¶
func (c *Commit) CreateArchive(path string, archiveType ArchiveType) error
func (*Commit) GetCommitOfRelPath ¶
func (*Commit) ParentCount ¶
Return the number of parents of the commit. 0 if this is the root commit, otherwise 1,2,...
type CommitComparator ¶
CommitComparator defines callback type for checking commit equalty. If it returns true then commits are considered equal. See "History Simplification" chapter of git-log man for details
type CommitWalkCallback ¶
type CommitWalkCallback func(*Commit) (HistoryWalkerAction, error)
type HistoryWalkerAction ¶
type HistoryWalkerAction int
const ( // drop commit and do not follow parents HWDrop HistoryWalkerAction = 0 // take commit but not traverse parents HWTakeCommit HistoryWalkerAction = 1 << iota // drop commit but traverse parents HWFollowParents // stop traverse HWStop // take commit and follow parents HWTakeAndFollow = HWTakeCommit | HWFollowParents )
type ObjectType ¶
type ObjectType int
Who am I?
const ( ObjectCommit ObjectType = 0x10 ObjectTree ObjectType = 0x20 ObjectBlob ObjectType = 0x30 ObjectTag ObjectType = 0x40 )
func (ObjectType) String ¶
func (t ObjectType) String() string
type Repository ¶
type Repository struct { Path string // contains filtered or unexported fields }
A Repository is the base of all other actions. If you need to lookup a commit, tree or blob, you do it from here.
func OpenRepository ¶
func OpenRepository(path string) (*Repository, error)
Open the repository at the given path.
func (*Repository) CommitsBefore ¶
func (repo *Repository) CommitsBefore(commitId string) (*list.List, error)
func (*Repository) CommitsBetween ¶
used only for single tree, (]
func (*Repository) CommitsByFileAndRange ¶
func (*Repository) CommitsByRange ¶
GetCommitsByRange returns certain number of commits with given page of repository.
func (*Repository) CommitsCount ¶
func (repo *Repository) CommitsCount(commitId string) (int, error)
func (*Repository) CreateBranch ¶
func (repo *Repository) CreateBranch(branchName, idStr string) error
func (*Repository) CreateTag ¶
func (repo *Repository) CreateTag(tagName, idStr string) error
func (*Repository) FileCommitsCount ¶
func (repo *Repository) FileCommitsCount(branch, file string) (int, error)
func (*Repository) GetBranches ¶
func (repo *Repository) GetBranches() ([]string, error)
func (*Repository) GetCommit ¶
func (repo *Repository) GetCommit(commitId string) (*Commit, error)
Find the commit object in the repository.
func (*Repository) GetCommitIdOfBranch ¶
func (repo *Repository) GetCommitIdOfBranch(branchName string) (string, error)
func (*Repository) GetCommitIdOfTag ¶
func (repo *Repository) GetCommitIdOfTag(tagName string) (string, error)
func (*Repository) GetCommitOfBranch ¶
func (repo *Repository) GetCommitOfBranch(branchName string) (*Commit, error)
get branch's last commit or a special commit by id string
func (*Repository) GetCommitOfRelPath ¶
func (repo *Repository) GetCommitOfRelPath(commitId, relPath string) (*Commit, error)
func (*Repository) GetCommitOfTag ¶
func (repo *Repository) GetCommitOfTag(tagName string) (*Commit, error)
func (*Repository) GetRawObject ¶
func (repo *Repository) GetRawObject(id sha1, metaOnly bool) (ObjectType, int64, io.ReadCloser, error)
func (*Repository) GetTags ¶
func (repo *Repository) GetTags() ([]string, error)
GetTags returns all tags of given repository.
func (*Repository) GetTree ¶
func (repo *Repository) GetTree(idStr string) (*Tree, error)
Find the tree object in the repository.
func (*Repository) HaveObject ¶
func (repo *Repository) HaveObject(idStr string) (found, packed bool, err error)
func (*Repository) HaveObjectFromReadSeeker ¶
func (repo *Repository) HaveObjectFromReadSeeker( objectType ObjectType, r io.ReadSeeker, ) (found bool, id sha1, err error)
Returns true if the content in `io.ReadSeeker` is aleady present in the object database. Leaves the initial seek position of `r` intact.
func (*Repository) IsBranchExist ¶
func (repo *Repository) IsBranchExist(branchName string) bool
func (*Repository) IsTagExist ¶
func (repo *Repository) IsTagExist(tagName string) bool
func (*Repository) SearchCommits ¶
func (repo *Repository) SearchCommits(commitId, keyword string) (*list.List, error)
SearchCommits searches commits in given commitId and keyword of repository.
func (*Repository) StoreObjectLoose ¶
func (repo *Repository) StoreObjectLoose( objectType ObjectType, r io.ReadSeeker, ) (sha1, error)
Write an object into git's loose database. If the object already exists in the database, it is not overwritten, though the compression is still performed. To avoid the compression, call HaveObjectFromReader first, which is fast and just does the SHA.
func (*Repository) TagPath ¶
func (repo *Repository) TagPath(tagName string) string
type Tag ¶
type Tag struct { Name string Id sha1 Object sha1 // The id of this commit object Type string Tagger *Signature TagMessage string // contains filtered or unexported fields }
Tag
type Tree ¶
type Tree struct { Id sha1 // contains filtered or unexported fields }
A tree is a flat directory listing.
func NewTree ¶
func NewTree(repo *Repository, id sha1) *Tree
func (*Tree) GetTreeEntryByPath ¶
func (*Tree) ListEntries ¶
func (*Tree) Scanner ¶
func (t *Tree) Scanner() (*TreeScanner, error)
type TreeEntry ¶
type TreeEntry struct { Id sha1 Type ObjectType // contains filtered or unexported fields }
type TreeScanner ¶
func NewTreeScanner ¶
func NewTreeScanner(parent *Tree, rc io.ReadCloser) *TreeScanner
func (*TreeScanner) Err ¶
func (t *TreeScanner) Err() error
func (*TreeScanner) Scan ¶
func (t *TreeScanner) Scan() bool
func (*TreeScanner) TreeEntry ¶
func (t *TreeScanner) TreeEntry() *TreeEntry
type TreeWalkCallback ¶
Source Files ¶
- blob.go
- commit.go
- commit_archive.go
- commit_utils.go
- reference.go
- repo.go
- repo_branch.go
- repo_commit.go
- repo_history.go
- repo_history_handlers.go
- repo_object.go
- repo_tag.go
- repo_tree.go
- repo_utils.go
- repo_utils_parse.go
- repo_utils_reader.go
- sha1.go
- signature.go
- tag.go
- tree.go
- tree_blob.go
- tree_entry.go
- tree_utils.go
- utils.go