diff options
Diffstat (limited to 'repository.go')
| -rw-r--r-- | repository.go | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/repository.go b/repository.go index 015e5bf..0a07dc3 100644 --- a/repository.go +++ b/repository.go @@ -72,7 +72,7 @@ func (v *Repository) Index() (*Index, error) { return newIndexFromC(ptr), nil } -func (v *Repository) Lookup(oid *Oid, t ObjectType) (Object, error) { +func (v *Repository) lookupType(oid *Oid, t ObjectType) (Object, error) { var ptr *C.git_object ret := C.git_object_lookup(&ptr, v.ptr, oid.toC(), C.git_otype(t)) if ret < 0 { @@ -82,8 +82,12 @@ func (v *Repository) Lookup(oid *Oid, t ObjectType) (Object, error) { return allocObject(ptr), nil } +func (v *Repository) Lookup(oid *Oid) (Object, error) { + return v.lookupType(oid, OBJ_ANY) +} + func (v *Repository) LookupTree(oid *Oid) (*Tree, error) { - obj, err := v.Lookup(oid, OBJ_TREE) + obj, err := v.lookupType(oid, OBJ_TREE) if err != nil { return nil, err } @@ -92,7 +96,7 @@ func (v *Repository) LookupTree(oid *Oid) (*Tree, error) { } func (v *Repository) LookupCommit(oid *Oid) (*Commit, error) { - obj, err := v.Lookup(oid, OBJ_COMMIT) + obj, err := v.lookupType(oid, OBJ_COMMIT) if err != nil { return nil, err } @@ -101,7 +105,7 @@ func (v *Repository) LookupCommit(oid *Oid) (*Commit, error) { } func (v *Repository) LookupBlob(oid *Oid) (*Blob, error) { - obj, err := v.Lookup(oid, OBJ_BLOB) + obj, err := v.lookupType(oid, OBJ_BLOB) if err != nil { return nil, err } @@ -247,3 +251,15 @@ func (v *Repository) TreeBuilder() (*TreeBuilder, error) { return bld, nil } +func (v *Repository) RevparseSingle(spec string) (Object, error) { + cspec := C.CString(spec) + defer C.free(unsafe.Pointer(cspec)) + + var ptr *C.git_object + ecode := C.git_revparse_single(&ptr, v.ptr, cspec) + if ecode < 0 { + return nil, LastError() + } + + return allocObject(ptr), nil +} |
