summaryrefslogtreecommitdiff
path: root/tag.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2017-07-09 20:10:07 +0200
committerGitHub <[email protected]>2017-07-09 20:10:07 +0200
commit7969aefd42abf3d3d93397760e54c872493e0972 (patch)
tree478e6de1af1cdc7aff71a954423ef5062adcf3fd /tag.go
parent2cff3f2ef4828c755a545e5abacd3d7b2da3fc6d (diff)
parent916d555644a241a55e1779d379618ab89108e850 (diff)
Merge pull request #397 from libgit2/cmn/tag-generic
Tag any kind of object
Diffstat (limited to 'tag.go')
-rw-r--r--tag.go23
1 files changed, 13 insertions, 10 deletions
diff --git a/tag.go b/tag.go
index a58b090..4debdb7 100644
--- a/tag.go
+++ b/tag.go
@@ -17,6 +17,10 @@ type Tag struct {
cast_ptr *C.git_tag
}
+func (t *Tag) AsObject() *Object {
+ return &t.Object
+}
+
func (t Tag) Message() string {
ret := C.GoString(C.git_tag_message(t.cast_ptr))
runtime.KeepAlive(t)
@@ -63,8 +67,7 @@ type TagsCollection struct {
repo *Repository
}
-func (c *TagsCollection) Create(
- name string, commit *Commit, tagger *Signature, message string) (*Oid, error) {
+func (c *TagsCollection) Create(name string, obj Objecter, tagger *Signature, message string) (*Oid, error) {
oid := new(Oid)
@@ -80,13 +83,13 @@ func (c *TagsCollection) Create(
}
defer C.git_signature_free(taggerSig)
- ctarget := commit.ptr
-
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- ret := C.git_tag_create(oid.toC(), c.repo.ptr, cname, ctarget, taggerSig, cmessage, 0)
+ o := obj.AsObject()
+ ret := C.git_tag_create(oid.toC(), c.repo.ptr, cname, o.ptr, taggerSig, cmessage, 0)
runtime.KeepAlive(c)
+ runtime.KeepAlive(obj)
if ret < 0 {
return nil, MakeGitError(ret)
}
@@ -110,7 +113,7 @@ func (c *TagsCollection) Remove(name string) error {
return nil
}
-// CreateLightweight creates a new lightweight tag pointing to a commit
+// CreateLightweight creates a new lightweight tag pointing to an object
// and returns the id of the target object.
//
// The name of the tag is validated for consistency (see git_tag_create() for the rules
@@ -122,20 +125,20 @@ func (c *TagsCollection) Remove(name string) error {
// The created tag is a simple reference and can be queried using
// repo.References.Lookup("refs/tags/<name>"). The name of the tag (eg "v1.0.0")
// is queried with ref.Shorthand().
-func (c *TagsCollection) CreateLightweight(name string, commit *Commit, force bool) (*Oid, error) {
+func (c *TagsCollection) CreateLightweight(name string, obj Objecter, force bool) (*Oid, error) {
oid := new(Oid)
cname := C.CString(name)
defer C.free(unsafe.Pointer(cname))
- ctarget := commit.ptr
-
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- err := C.git_tag_create_lightweight(oid.toC(), c.repo.ptr, cname, ctarget, cbool(force))
+ o := obj.AsObject()
+ err := C.git_tag_create_lightweight(oid.toC(), c.repo.ptr, cname, o.ptr, cbool(force))
runtime.KeepAlive(c)
+ runtime.KeepAlive(obj)
if err < 0 {
return nil, MakeGitError(err)
}