Performance Fix: Minimize number of advertisedHaves

While we set up hooks in ReceiveCommits to minimize the number of
advertised refs (for instance filtering out refs/changes and
refs/cache-automerge refs), their objectIds will still be added to
BaseReceivePack.advertisedHaves (JGit), leading to an unnecessarily
complex commit graph for JGit to traverse when checking for commit
connectivity in BaseReceivePack.checkConnectivity().

By filtering the refs before the objectIds are added to advertisedHaves,
lots of time can be saved when pushing to complex Gits.

Push times for one of our Gits (warm caches):

Before fix:
real	0m42.926s

After fix:
real	0m6.325s

This Git has around 90k change/ps refs.

Change-Id: I2f0a0830bd733f908f0aeaf1eaf0412dae428a16
1 file changed