Browse Source

Fix push option initalization on HTTP

Initialize pushOptions when we decide to use them, instead of when we
advertise them.

In the case of HTTP the advertisement is in a different network
request, hence in a different instance of the BaseReceivePack.

Change-Id: I094c60942e04de82cb6d8433c9cd43a46ffae332
Signed-off-by: Stefan Beller <sbeller@google.com>
stable-4.5
Stefan Beller 8 years ago committed by Shawn Pearce
parent
commit
36cf4fe580
  1. 2
      org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java
  2. 4
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

2
org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java

@ -220,7 +220,7 @@ public class PushOptionsTest extends RepositoryTestCase {
one.getStatus());
assertSame(RemoteRefUpdate.Status.REJECTED_REMOTE_CHANGED,
two.getStatus());
assertEquals(new ArrayList<String>(), baseReceivePack.getPushOptions());
assertNull(baseReceivePack.getPushOptions());
}
@Test

4
org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

@ -1152,7 +1152,6 @@ public abstract class BaseReceivePack {
adv.advertiseCapability(CAPABILITY_OFS_DELTA);
if (allowPushOptions) {
adv.advertiseCapability(CAPABILITY_PUSH_OPTIONS);
pushOptions = new ArrayList<>();
}
adv.advertiseCapability(OPTION_AGENT, UserAgent.get());
adv.send(getAdvertisedOrDefaultRefs());
@ -1272,6 +1271,9 @@ public abstract class BaseReceivePack {
quiet = allowQuiet && isCapabilityEnabled(CAPABILITY_QUIET);
usePushOptions = allowPushOptions
&& isCapabilityEnabled(CAPABILITY_PUSH_OPTIONS);
if (usePushOptions) {
pushOptions = new ArrayList<>();
}
if (sideBand) {
OutputStream out = rawOut;

Loading…
Cancel
Save