diff --git a/lib/src/diff.dart b/lib/src/diff.dart index dc505b2..a9ca618 100644 --- a/lib/src/diff.dart +++ b/lib/src/diff.dart @@ -40,6 +40,16 @@ class Diff { return deltas; } + /// Returns a list of [Patch]es. + List get patches { + final length = bindings.length(_diffPointer); + var patches = []; + for (var i = 0; i < length; i++) { + patches.add(Patch.fromDiff(this, i)); + } + return patches; + } + /// Returns a patch diff string. String get patch { final length = bindings.length(_diffPointer); diff --git a/test/diff_test.dart b/test/diff_test.dart index 11bfbc9..a03e587 100644 --- a/test/diff_test.dart +++ b/test/diff_test.dart @@ -281,6 +281,21 @@ index e69de29..c217c63 100644 index.free(); }); + test('returns deltas', () { + final index = repo.index; + final diff = index.diffToWorkdir(); + final patches = diff.patches; + + expect(patches.length, 8); + expect(patches.first.delta.status, GitDelta.deleted); + + for (var p in patches) { + p.free(); + } + diff.free(); + index.free(); + }); + test('returns stats', () { final index = repo.index; final diff = index.diffToWorkdir();