public class HackPushNegotiateHook extends Object implements org.eclipse.jgit.transport.AdvertiseRefsHook
This is a hack to work around the lack of negotiation in the send-pack/receive-pack wire protocol.
When the server is frequently advancing master by creating merge commits, the
client may not be able to discover a common ancestor during push. Attempting
to push will re-upload a very large amount of history. This hook hacks in a
fake negotiation replacement by walking history and sending recent commits as
".have"
lines in the wire protocol, allowing the client to find a
common ancestor.
Constructor and Description |
---|
HackPushNegotiateHook() |
Modifier and Type | Method and Description |
---|---|
void |
advertiseRefs(org.eclipse.jgit.transport.BaseReceivePack rp) |
void |
advertiseRefs(org.eclipse.jgit.transport.UploadPack us) |
public void advertiseRefs(org.eclipse.jgit.transport.UploadPack us)
advertiseRefs
in interface org.eclipse.jgit.transport.AdvertiseRefsHook
public void advertiseRefs(org.eclipse.jgit.transport.BaseReceivePack rp) throws org.eclipse.jgit.transport.ServiceMayNotContinueException
advertiseRefs
in interface org.eclipse.jgit.transport.AdvertiseRefsHook
org.eclipse.jgit.transport.ServiceMayNotContinueException