Add Diff.ToBuf wrapping git_diff_to_buf
This commit is contained in:
parent
bf1e8a4338
commit
ad02c37e6d
30
diff.go
30
diff.go
|
@ -405,6 +405,36 @@ func (diff *Diff) Patch(deltaIndex int) (*Patch, error) {
|
|||
return newPatchFromC(patchPtr), nil
|
||||
}
|
||||
|
||||
type DiffFormat int
|
||||
|
||||
const (
|
||||
DiffFormatPatch DiffFormat = C.GIT_DIFF_FORMAT_PATCH
|
||||
DiffFormatPatchHeader DiffFormat = C.GIT_DIFF_FORMAT_PATCH_HEADER
|
||||
DiffFormatRaw DiffFormat = C.GIT_DIFF_FORMAT_RAW
|
||||
DiffFormatNameOnly DiffFormat = C.GIT_DIFF_FORMAT_NAME_ONLY
|
||||
DiffFormatNameStatus DiffFormat = C.GIT_DIFF_FORMAT_NAME_STATUS
|
||||
)
|
||||
|
||||
func (diff *Diff) ToBuf(format DiffFormat) ([]byte, error) {
|
||||
if diff.ptr == nil {
|
||||
return nil, ErrInvalid
|
||||
}
|
||||
|
||||
diffBuf := C.git_buf{}
|
||||
|
||||
runtime.LockOSThread()
|
||||
defer runtime.UnlockOSThread()
|
||||
|
||||
ecode := C.git_diff_to_buf(&diffBuf, diff.ptr, C.git_diff_format_t(format))
|
||||
runtime.KeepAlive(diff)
|
||||
if ecode < 0 {
|
||||
return nil, MakeGitError(ecode)
|
||||
}
|
||||
defer C.git_buf_free(&diffBuf)
|
||||
|
||||
return C.GoBytes(unsafe.Pointer(diffBuf.ptr), C.int(diffBuf.size)), nil
|
||||
}
|
||||
|
||||
type DiffOptionsFlag int
|
||||
|
||||
const (
|
||||
|
|
Loading…
Reference in New Issue