作者:jgroch
项目:go-git
func (repo *Repository) LookupObject(id *Oid, form ObjectType) (*Object, error) {
obj := new(Object)
ecode := C.git_object_lookup(&obj.git_object, repo.git_repository, id.git_oid, C.git_otype(form))
if ecode != git_SUCCESS {
return nil, gitError()
}
return obj, nil
}
作者:JohannWegin
项目:git2g
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 {
return nil, LastError()
}
return allocObject(ptr), nil
}
作者:joshi
项目:shortbrea
// NewWriteStream opens a write stream to the ODB, which allows you to
// create a new object in the database. The size and type must be
// known in advance
func (v *Odb) NewWriteStream(size int, otype ObjectType) (*OdbWriteStream, error) {
stream := new(OdbWriteStream)
ret := C.git_odb_open_wstream(&stream.ptr, v.ptr, C.size_t(size), C.git_otype(otype))
if ret < 0 {
return nil, MakeGitError(ret)
}
runtime.SetFinalizer(stream, (*OdbWriteStream).Free)
return stream, nil
}
作者:jgroch
项目:go-git
func (odb *Odb) HashFile(path string, form ObjectType) (*Oid, error) {
oid := new(Oid)
cpath := C.CString(path)
defer C.free(unsafe.Pointer(cpath))
ecode := C.git_odb_hashfile(oid.git_oid, cpath, C.git_otype(form))
if ecode != git_SUCCESS {
return nil, gitError()
}
return oid, nil
}
作者:jgroch
项目:go-git
func (odb *Odb) Hash(data []byte, form ObjectType) (*Oid, error) {
oid := new(Oid)
cdata := unsafe.Pointer(&data[0])
defer C.free(cdata)
length := C.size_t(len(data))
ecode := C.git_odb_hash(oid.git_oid, cdata, length, C.git_otype(form))
if ecode != git_SUCCESS {
return nil, gitError()
}
return oid, nil
}
作者:kissthin
项目:git2g
func (v *Reference) Peel(t ObjectType) (Object, error) {
var cobj *C.git_object
runtime.LockOSThread()
defer runtime.UnlockOSThread()
if err := C.git_reference_peel(&cobj, v.ptr, C.git_otype(t)); err < 0 {
return nil, MakeGitError(err)
}
return allocObject(cobj, v.repo), nil
}
作者:wi
项目:git2g
func (v *Repository) lookupType(id *Oid, t ObjectType) (Object, error) {
var ptr *C.git_object
runtime.LockOSThread()
defer runtime.UnlockOSThread()
ret := C.git_object_lookup(&ptr, v.ptr, id.toC(), C.git_otype(t))
if ret < 0 {
return nil, MakeGitError(ret)
}
return allocObject(ptr, v), nil
}
作者:joshi
项目:shortbrea
// Hash determines the object-ID (sha1) of a data buffer.
func (v *Odb) Hash(data []byte, otype ObjectType) (oid *Oid, err error) {
oid = new(Oid)
header := (*reflect.SliceHeader)(unsafe.Pointer(&data))
ptr := unsafe.Pointer(header.Data)
runtime.LockOSThread()
defer runtime.UnlockOSThread()
ret := C.git_odb_hash(oid.toC(), ptr, C.size_t(header.Len), C.git_otype(otype))
if ret < 0 {
return nil, MakeGitError(ret)
}
return oid, nil
}
作者:ianlancetaylo
项目:git2g
func (v *Odb) Write(data []byte, otype ObjectType) (oid *Oid, err error) {
oid = new(Oid)
var cptr unsafe.Pointer
if len(data) > 0 {
cptr = unsafe.Pointer(&data[0])
}
runtime.LockOSThread()
defer runtime.UnlockOSThread()
ret := C.git_odb_write(oid.toC(), v.ptr, cptr, C.size_t(len(data)), C.git_otype(otype))
if ret < 0 {
return nil, MakeGitError(ret)
}
return oid, nil
}
作者:jgroch
项目:go-git
func ObjectTypeIsLoose(form ObjectType) bool {
return C.git_object_typeisloose(C.git_otype(form)) != c_FALSE
}
作者:jgroch
项目:go-git
func ObjectType2String(form ObjectType) string {
return C.GoString(C.git_object_type2string(C.git_otype(form)))
}
作者:JohannWegin
项目:git2g
func (v *Odb) Write(data []byte, otype ObjectType) (oid *Oid, err error) {
oid = new(Oid)
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&data))
ret := C.git_odb_write(oid.toC(), v.ptr, unsafe.Pointer(hdr.Data), C.size_t(hdr.Len), C.git_otype(otype))
if ret < 0 {
err = LastError()
}
return
}
作者:jgroch
项目:go-git
func (odb *Odb) OpenWStream(size int, form ObjectType) (*OdbStream, error) {
stream := new(OdbStream)
ecode := C.git_odb_open_wstream(&stream.git_odb_stream, odb.git_odb, C.size_t(size), C.git_otype(form))
if ecode != git_SUCCESS {
return nil, gitError()
}
return stream, nil
}
作者:jingwen
项目:git2g
func (v *Odb) Write(data []byte, otype ObjectType) (oid *Oid, err error) {
oid = new(Oid)
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&data))
runtime.LockOSThread()
defer runtime.UnlockOSThread()
ret := C.git_odb_write(oid.toC(), v.ptr, unsafe.Pointer(hdr.Data), C.size_t(hdr.Len), C.git_otype(otype))
if ret < 0 {
err = MakeGitError(ret)
}
return
}