From 5c09440f4252223e9f0f49e7d67accd2d7455bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Wed, 6 Mar 2013 23:59:33 +0100 Subject: [PATCH] Add a couple of missing methods around Blob --- blob.go | 4 ++++ repository.go | 11 +++++++++++ 2 files changed, 15 insertions(+) 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)