From 36cf4fe580a2b771331e0b9bcaea5505b3b7e27a Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Fri, 26 Aug 2016 14:10:06 -0700 Subject: [PATCH] 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 --- .../tst/org/eclipse/jgit/transport/PushOptionsTest.java | 2 +- .../src/org/eclipse/jgit/transport/BaseReceivePack.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java index 1554f8430..8ff022618 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PushOptionsTest.java @@ -220,7 +220,7 @@ public void testFailedAtomicPushWithOptions() throws Exception { one.getStatus()); assertSame(RemoteRefUpdate.Status.REJECTED_REMOTE_CHANGED, two.getStatus()); - assertEquals(new ArrayList(), baseReceivePack.getPushOptions()); + assertNull(baseReceivePack.getPushOptions()); } @Test 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 4bd3af2f8..825e294d9 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -1152,7 +1152,6 @@ public void sendAdvertisedRefs(final RefAdvertiser adv) 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 @@ protected void enableCapabilities() { quiet = allowQuiet && isCapabilityEnabled(CAPABILITY_QUIET); usePushOptions = allowPushOptions && isCapabilityEnabled(CAPABILITY_PUSH_OPTIONS); + if (usePushOptions) { + pushOptions = new ArrayList<>(); + } if (sideBand) { OutputStream out = rawOut;