summaryrefslogtreecommitdiff
path: root/src/diff.c
diff options
context:
space:
mode:
authorJason Haslam <jason@scitools.com>2015-07-16 10:17:16 -0600
committerEdward Thomson <ethomson@microsoft.com>2015-11-02 16:33:58 -0500
commit3138ad936682addd191913c42946aae431b4eece (patch)
treeabfb79a660933fb5ad68f3fdcd812fe9d0e61958 /src/diff.c
parentdb1edf91e9ba9e82e6534c445008703766b5a6da (diff)
downloadlibgit2-3138ad936682addd191913c42946aae431b4eece.tar.gz
Add diff progress callback.
Diffstat (limited to 'src/diff.c')
-rw-r--r--src/diff.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/diff.c b/src/diff.c
index b5e9b6cd5..c2362358a 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -56,7 +56,7 @@ static int diff_insert_delta(
if (diff->opts.notify_cb) {
error = diff->opts.notify_cb(
- diff, delta, matched_pathspec, diff->opts.notify_payload);
+ diff, delta, matched_pathspec, diff->opts.payload);
if (error) {
git__free(delta);
@@ -1260,7 +1260,18 @@ int git_diff__from_iterators(
/* run iterators building diffs */
while (!error && (info.oitem || info.nitem)) {
- int cmp = info.oitem ?
+ int cmp;
+
+ /* report progress */
+ if (opts && opts->progress_cb) {
+ if ((error = opts->progress_cb(diff,
+ info.oitem ? info.oitem->path : NULL,
+ info.nitem ? info.nitem->path : NULL,
+ opts->payload)))
+ break;
+ }
+
+ cmp = info.oitem ?
(info.nitem ? diff->entrycomp(info.oitem, info.nitem) : -1) : 1;
/* create DELETED records for old items not matched in new */