diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index 218b72988..2e2de8216 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -136,10 +136,10 @@ public Set getCapabilities() { } /** Database we write the stored objects into. */ - protected final Repository db; + private final Repository db; /** Revision traversal support over {@link #db}. */ - protected final RevWalk walk; + private final RevWalk walk; /** * Is the client connection a bi-directional socket or pipe? @@ -152,22 +152,22 @@ public Set getCapabilities() { * If false, this class runs in a read everything then output results mode, * making it suitable for single round-trip systems RPCs such as HTTP. */ - protected boolean biDirectionalPipe = true; + private boolean biDirectionalPipe = true; /** Expecting data after the pack footer */ - protected boolean expectDataAfterPackFooter; + private boolean expectDataAfterPackFooter; /** Should an incoming transfer validate objects? */ - protected boolean checkReceivedObjects; + private boolean checkReceivedObjects; /** Should an incoming transfer permit create requests? */ - protected boolean allowCreates; + private boolean allowCreates; /** Should an incoming transfer permit delete requests? */ - protected boolean allowDeletes; + private boolean allowDeletes; /** Should an incoming transfer permit non-fast-forward requests? */ - protected boolean allowNonFastForwards; + private boolean allowNonFastForwards; private boolean allowOfsDelta; @@ -212,23 +212,20 @@ public Set getCapabilities() { private PackParser parser; /** The refs we advertised as existing at the start of the connection. */ - protected Map refs; + private Map refs; /** All SHA-1s shown to the client, which can be possible edges. */ - protected Set advertisedHaves; + private Set advertisedHaves; /** Capabilities requested by the client. */ - protected Set enabledCapabilities; + private Set enabledCapabilities; private List commands; private StringBuilder advertiseError; - /** If {@link BasePackPushConnection#CAPABILITY_REPORT_STATUS} is enabled. */ - protected boolean reportStatus; - /** If {@link BasePackPushConnection#CAPABILITY_SIDE_BAND_64K} is enabled. */ - protected boolean sideBand; + private boolean sideBand; /** Lock around the received pack file, while updating refs. */ private PackLock packLock; @@ -872,9 +869,7 @@ protected void recvCommands() throws IOException { /** Enable capabilities based on a previously read capabilities line. */ protected void enableCapabilities() { - reportStatus = enabledCapabilities.contains(CAPABILITY_REPORT_STATUS); - - sideBand = enabledCapabilities.contains(CAPABILITY_SIDE_BAND_64K); + sideBand = isCapabilityEnabled(CAPABILITY_SIDE_BAND_64K); if (sideBand) { OutputStream out = rawOut; @@ -886,6 +881,17 @@ protected void enableCapabilities() { } } + /** + * Check if the peer requested a capability. + * + * @param name + * protocol name identifying the capability. + * @return true if the peer requested the capability to be enabled. + */ + protected boolean isCapabilityEnabled(String name) { + return enabledCapabilities.contains(name); + } + /** @return true if a pack is expected based on the list of commands. */ protected boolean needPack() { for (final ReceiveCommand cmd : commands) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java index 9630f7853..fb30d99fc 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java @@ -43,6 +43,8 @@ package org.eclipse.jgit.transport; +import static org.eclipse.jgit.transport.BasePackPushConnection.CAPABILITY_REPORT_STATUS; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -63,6 +65,9 @@ public class ReceivePack extends BaseReceivePack { /** Hook to report on the commands after execution. */ private PostReceiveHook postReceive; + /** If {@link BasePackPushConnection#CAPABILITY_REPORT_STATUS} is enabled. */ + private boolean reportStatus; + private boolean echoCommandFailures; /** @@ -162,8 +167,14 @@ public void receive(final InputStream input, final OutputStream output, } } + @Override + protected void enableCapabilities() { + reportStatus = isCapabilityEnabled(CAPABILITY_REPORT_STATUS); + super.enableCapabilities(); + } + private void service() throws IOException { - if (biDirectionalPipe) { + if (isBiDirectionalPipe()) { sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut)); pckOut.flush(); } else