summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <[email protected]>2013-03-06 15:01:42 -0800
committerVicent Martí <[email protected]>2013-03-06 15:01:42 -0800
commitbc3f9e02ee8d97c62282b90cb47ba8208ea66d56 (patch)
tree5fcf0114194960456205b7d5f5aab23dfab5c661
parent677378bc3434123eb68a543b256479772bca5631 (diff)
parent5c09440f4252223e9f0f49e7d67accd2d7455bbe (diff)
Merge pull request #7 from carlosmn/blob
Add a couple of missing methods around Blob
-rw-r--r--blob.go4
-rw-r--r--repository.go11
2 files changed, 15 insertions, 0 deletions
diff --git a/blob.go b/blob.go
index f7db15e..73e3ab3 100644
--- a/blob.go
+++ b/blob.go
@@ -20,6 +20,10 @@ func (v *Blob) Free() {
C.git_object_free(v.ptr)
}
+func (v *Blob) Size() int64 {
+ return int64(C.git_blob_rawsize(v.ptr))
+}
+
func (v *Blob) Contents() []byte {
size := C.int(C.git_blob_rawsize(v.ptr))
buffer := unsafe.Pointer(C.git_blob_rawcontent(v.ptr))
diff --git a/repository.go b/repository.go
index bfbd781..4cc8c5d 100644
--- a/repository.go
+++ b/repository.go
@@ -92,6 +92,17 @@ func (v *Repository) LookupCommit(o *Oid) (*Commit, error) {
return commit, nil
}
+func (v *Repository) LookupBlob(o *Oid) (*Blob, error) {
+ blob := new(Blob)
+ ecode := C.git_blob_lookup(&blob.ptr, v.ptr, o.toC())
+ if ecode < 0 {
+ return nil, LastError()
+ }
+
+ runtime.SetFinalizer(blob, (*Blob).Free)
+ return blob, nil
+}
+
func (v *Repository) Walk() (*RevWalk, error) {
walk := new(RevWalk)
ecode := C.git_revwalk_new(&walk.ptr, v.ptr)