libgit2/libgit2 — pull request #1412 by jamill (2013-03-13 22:19:03+00:00)
Title: Initial Implementation of progress reports during push

This adds the basics of progress reporting during push, but does not
report information for all aspects of a push operation. Push progress
reporting can be improved in the future - and consumers of the API
should just get more accurate information at that point.

The main areas where this is lacking are:

1) packbuilding progress: does not report progress during deltafication,
as this involves coordinating progress from multiple threads.

2) network progress: reports progress as objects and bytes are going
to be written to the subtransport (instead of as client gets
confirmation that they have been received by the server) and leaves
out some of the bytes that are transfered as part of the push protocol.
Basically, this reports the pack bytes that are written to the
subtransport. It does not report the bytes sent on the wire that
are received by the server. This should be a good estimate of
progress (and an improvement over no progress).

I think the main points here are that
- This adds the basics of push progress that can be improved upon later
- This punts on some of the more difficult areas to add progress (but can be added later without disrupting consumers of the API). For the deltafication stage, we just report that we are in this stage, but does not report the number of objects "deltafied"

TODO:
- Add enum for the "stages" of packbuilding progress reporting

/cc @phkelley, @carlosmn, @schu