Just FYI, here's what clone's pattern looks like:

```sh
$ ./git2 clone https://github.com/twitter/iago iago
net   0% (  12 kb,     0/  479)  /  idx   0% (    0/  479)  /  chk   0% (   0/   0) (null)
net   0% (  12 kb,     1/  479)  /  idx   0% (    1/  479)  /  chk   0% (   0/   0) (null)
# ...
net 100% ( 905 kb,   479/  479)  /  idx 100% (  479/  479)  /  chk   0% (   0/   0) (null)
net 100% ( 905 kb,   479/  479)  /  idx 100% (  479/  479)  /  chk   0% (   0/ 107) (null)
net 100% ( 905 kb,   479/  479)  /  idx 100% (  479/  479)  /  chk   0% (   1/ 107) .gitignore
```

1. First callback from fetch. Note the total number is already known.
1. Typical callback from fetch.
1. The last callback from the indexer, with current == total.
1. The first callback from the checker-outer, just to set up the total number of steps is.
1. Typical callback from checkout

The progress callbacks just aren't called until the total number is known.