As stated in a previous e-mail [1], I was trying to think a way to allow Git to fetch arbitrary blobs from another Git server, and it turned out that fetch-pack already can. However, there were some bugs with blob reachability. This patch set fixes those bugs, and verifies (with tests) that fetch-pack can fetch reachable blobs and cannot fetch unreachable blobs. These patches are (I think) worthwhile on their own, but may be of special interest to people who need Git to tolerate missing objects in the local repo (for example, the e-mail discussion "[RFC] Add support for downloading blobs on demand" [2]) because a way for Git to download missing objects natively is (I think) a prerequisite to that. [1] <20170223230358.30050-1-jonathantanmy@xxxxxxxxxx> [2] <20170113155253.1644-1-benpeart@xxxxxxxxxxxxx> Jonathan Tan (3): revision: unify {tree,blob}_objects in rev_info revision: exclude trees/blobs given commit upload-pack: compute blob reachability correctly bisect.c | 2 +- builtin/rev-list.c | 6 ++-- list-objects.c | 4 +-- pack-bitmap-write.c | 3 +- pack-bitmap.c | 3 +- reachable.c | 3 +- revision.c | 18 +++++----- revision.h | 3 +- t/t5500-fetch-pack.sh | 30 +++++++++++++++++ t/t6000-rev-list-misc.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ upload-pack.c | 15 +++++++++ 11 files changed, 151 insertions(+), 24 deletions(-) -- 2.11.0.483.g087da7b7c-goog