My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 3272: Full-object packfile always returned when fetching from refs/changes regardless of local objects.
1 person starred this issue and may be notified of changes. Back to list
Status:  New
Owner:  ----


Sign in to add a comment
 
Reported by dnj@chromium.org, Apr 1, 2015
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.
Sign in to add a comment

Powered by Google Project Hosting