From 524cc7967be53176108e5c703818ccdd18882100 Mon Sep 17 00:00:00 2001 From: Mark Probst Date: Wed, 11 Mar 2015 16:12:39 -0700 Subject: [PATCH] Add DiffIndexToWorkdir --- diff.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/diff.go b/diff.go index 54e4a92..23469f2 100644 --- a/diff.go +++ b/diff.go @@ -620,3 +620,28 @@ func (v *Repository) DiffTreeToWorkdirWithIndex(oldTree *Tree, opts *DiffOptions } return newDiffFromC(diffPtr), nil } + +func (v *Repository) DiffIndexToWorkdir(index *Index, opts *DiffOptions) (*Diff, error) { + var diffPtr *C.git_diff + var indexPtr *C.git_index + + if index != nil { + indexPtr = index.ptr + } + + copts, notifyData := diffOptionsToC(opts) + defer freeDiffOptions(copts) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ecode := C.git_diff_index_to_workdir(&diffPtr, v.ptr, indexPtr, copts) + if ecode < 0 { + return nil, MakeGitError(ecode) + } + + if notifyData != nil && notifyData.Diff != nil { + return notifyData.Diff, nil + } + return newDiffFromC(diffPtr), nil +}