diff options
| author | Carlos Martín Nieto <[email protected]> | 2016-08-27 21:07:44 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2016-08-27 21:07:44 +0200 |
| commit | aadd0c2035d12b6469c53b7c444ea6fe1006c2c0 (patch) | |
| tree | fd56478f8014dd41dcba043dc0677930d14c4b06 /diff.go | |
| parent | 37d3c2d9ad4c4e970cac02faec8ad184412c34e6 (diff) | |
| parent | 241aa34d83b210ceaab7029c46e05794f2ea9797 (diff) | |
Merge remote-tracking branch 'upstream/master' into next
Diffstat (limited to 'diff.go')
| -rw-r--r-- | diff.go | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -220,6 +220,33 @@ func (stats *DiffStats) FilesChanged() int { return int(C.git_diff_stats_files_changed(stats.ptr)) } +type DiffStatsFormat int + +const ( + DiffStatsNone DiffStatsFormat = C.GIT_DIFF_STATS_NONE + DiffStatsFull DiffStatsFormat = C.GIT_DIFF_STATS_FULL + DiffStatsShort DiffStatsFormat = C.GIT_DIFF_STATS_SHORT + DiffStatsNumber DiffStatsFormat = C.GIT_DIFF_STATS_NUMBER + DiffStatsIncludeSummary DiffStatsFormat = C.GIT_DIFF_STATS_INCLUDE_SUMMARY +) + +func (stats *DiffStats) String(format DiffStatsFormat, + width uint) (string, error) { + buf := C.git_buf{} + defer C.git_buf_free(&buf) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ret := C.git_diff_stats_to_buf(&buf, + stats.ptr, C.git_diff_stats_format_t(format), C.size_t(width)) + if ret < 0 { + return "", MakeGitError(ret) + } + + return C.GoString(buf.ptr), nil +} + func (diff *Diff) Stats() (*DiffStats, error) { stats := new(DiffStats) @@ -626,6 +653,36 @@ func (v *Repository) DiffTreeToWorkdir(oldTree *Tree, opts *DiffOptions) (*Diff, return newDiffFromC(diffPtr), nil } +func (v *Repository) DiffTreeToIndex(oldTree *Tree, index *Index, opts *DiffOptions) (*Diff, error) { + var diffPtr *C.git_diff + var oldPtr *C.git_tree + var indexPtr *C.git_index + + if oldTree != nil { + oldPtr = oldTree.cast_ptr + } + + if index != nil { + indexPtr = index.ptr + } + + copts, notifyData := diffOptionsToC(opts) + defer freeDiffOptions(copts) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ecode := C.git_diff_tree_to_index(&diffPtr, v.ptr, oldPtr, indexPtr, copts) + if ecode < 0 { + return nil, MakeGitError(ecode) + } + + if notifyData != nil && notifyData.Diff != nil { + return notifyData.Diff, nil + } + return newDiffFromC(diffPtr), nil +} + func (v *Repository) DiffTreeToWorkdirWithIndex(oldTree *Tree, opts *DiffOptions) (*Diff, error) { var diffPtr *C.git_diff var oldPtr *C.git_tree |
