]> source.dussan.org Git - jgit.git/commit
Avoid looking at UNREACHABLE_GARBAGE for client have lines 05/11005/1
authorShawn Pearce <spearce@spearce.org>
Fri, 8 Mar 2013 20:45:28 +0000 (12:45 -0800)
committerShawn Pearce <spearce@spearce.org>
Fri, 8 Mar 2013 20:45:28 +0000 (12:45 -0800)
commit4e9fe58bb504f5041d322895a2fa2db93212e47e
treea6e458a5c2cbc2e60c916349d0a7ab108c5b5df0
parent437be8dfade74b039eeee24e400addcbb8fe2ca9
Avoid looking at UNREACHABLE_GARBAGE for client have lines

Clients send a bunch of unknown objects to UploadPack on each round
of negotiation. Many of these are not known to the server, which
leads the implementation to be looking at indexes for garbage packs.

Disable examining the index of a garbage pack, allowing servers to
avoid reading them from disk during negotiation.

The effect of this change is the server will only ACK a have line
if the object was reachable during the last garbage collection,
or was recently added to the repository. For most repositories
there is no impact in this behavior change.

If a repository rewinds a branch, runs GC, and then resets the
branch back to where it was before, the now current tip is going to
be skipped by this change. A client that has the commit may wind up
getting a slightly larger data transfer from the server as an older
common ancestor will be chosen during negotiation. This is fixable
on the server side by running GC again to correct the layout of
objects in pack files.

Change-Id: Icd550359ef70fc7b701980f9b13d923fd13c744b
org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackFile.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java