public class HackPushNegotiateHook
extends java.lang.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