diff options
| -rw-r--r-- | repository.go | 2 | ||||
| -rw-r--r-- | reset.go | 16 | ||||
| -rw-r--r-- | tag.go | 15 |
3 files changed, 32 insertions, 1 deletions
diff --git a/repository.go b/repository.go index 77e9f9c..efc506e 100644 --- a/repository.go +++ b/repository.go @@ -28,7 +28,7 @@ type Repository struct { // read, write and delete notes from this repository. Notes NoteCollection // Tags represents the collection of tags and can be used to create, - // list and iterate tags in this repository. + // list, iterate and remove tags in this repository. Tags TagsCollection } @@ -24,3 +24,19 @@ func (r *Repository) ResetToCommit(commit *Commit, resetType ResetType, opts *Ch } return nil } + +func (r *Repository) ResetDefaultToCommit(commit *Commit, pathspecs []string) error { + cpathspecs := C.git_strarray{} + cpathspecs.count = C.size_t(len(pathspecs)) + cpathspecs.strings = makeCStringsFromStrings(pathspecs) + defer freeStrarray(&cpathspecs) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + ret := C.git_reset_default(r.ptr, commit.ptr, &cpathspecs) + + if ret < 0 { + return MakeGitError(ret) + } + return nil +} @@ -83,6 +83,21 @@ func (c *TagsCollection) Create( return oid, nil } +func (c *TagsCollection) Remove(name string) error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + cname := C.CString(name) + defer C.free(unsafe.Pointer(cname)) + + ret := C.git_tag_delete(c.repo.ptr, cname) + if ret < 0 { + return MakeGitError(ret) + } + + return nil +} + // CreateLightweight creates a new lightweight tag pointing to a commit // and returns the id of the target object. // |
