diff options
| author | Carlos Martín Nieto <[email protected]> | 2015-01-04 12:14:12 +0000 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2015-01-04 12:14:12 +0000 |
| commit | dff9badc05f5fd98e8f6d002e1537c7ee3ef634f (patch) | |
| tree | 6c050ae008188bd34c7f72a6d49d60e17d6003aa /diff.go | |
| parent | dae3004ca339f568db8991cf4d93d0ad6fbaffd1 (diff) | |
| parent | 18aea4bfe89b83c5e2d6d55daa68efa6180655cc (diff) | |
Merge commit '18aea4bfe89b83c5e2d6d55daa68efa6180655cc'
Diffstat (limited to 'diff.go')
| -rw-r--r-- | diff.go | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -190,6 +190,46 @@ func (diff *Diff) FindSimilar(opts *DiffFindOptions) error { return nil } +type DiffStats struct { + ptr *C.git_diff_stats +} + +func (stats *DiffStats) Free() error { + if stats.ptr == nil { + return ErrInvalid + } + runtime.SetFinalizer(stats, nil) + C.git_diff_stats_free(stats.ptr) + stats.ptr = nil + return nil +} + +func (stats *DiffStats) Insertions() int { + return int(C.git_diff_stats_insertions(stats.ptr)) +} + +func (stats *DiffStats) Deletions() int { + return int(C.git_diff_stats_deletions(stats.ptr)) +} + +func (stats *DiffStats) FilesChanged() int { + return int(C.git_diff_stats_files_changed(stats.ptr)) +} + +func (diff *Diff) Stats() (*DiffStats, error) { + stats := new(DiffStats) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + if ecode := C.git_diff_get_stats(&stats.ptr, diff.ptr); ecode < 0 { + return nil, MakeGitError(ecode) + } + runtime.SetFinalizer(stats, (*DiffStats).Free) + + return stats, nil +} + type diffForEachData struct { FileCallback DiffForEachFileCallback HunkCallback DiffForEachHunkCallback |
