Affected Version: Live (2.11-rc1-208-g79f5f81).
Using Git version 2.2.0.rc0.207.ga3a616c.
What steps will reproduce the problem?
1. git init
2. git remote add origin https://gerrit.googlesource.com/gerrit
(Picking on a random recent CL, checking out PS#2):
3. git fetch origin refs/changes/00/66700/2
(Long checkout, downloads one pack file).
(Checking out PS#1. Has the same parent commit as PS#2, to reduce differences).
4. git fetch origin refs/changes/00/66700/1
What is the expected output? What do you see instead?
I'd expect the fetch in #4 to fetch significantly fewer objects/deltas than the fetch in #3, since most of the objects in #4 were already fetched in #3. Instead, they both fetch ~44MB worth of data and each adds a ~44MB packfile to "/objects/pack".
Additional comments:
Gerrit seems to be fetching a pack file containing the full set of objects regardless of which objects are already present in my local repository. This causes a significant increase in time and network traffic required to check out a patchset from "refs/changes".
For repositories that check in large binary blobs (not pointing fingers), it also greatly increases the on-disk size of the repositories due to duplicate gigantic objects in the packfiles until "git gc" is run. This can be problematic in continuous integration systems, which do this mechanically.