From 7b0a71a5e9916f0782eb24056a35b376373fdf59 Mon Sep 17 00:00:00 2001 From: Josh Brown Date: Tue, 1 Nov 2022 19:00:07 +0000 Subject: [PATCH] TransferConfig: Move reading advertisesid setting into TransferConfig The config setting to enable advertising the session-id capability is currently read in the ReceivePack class. This change moves it to a common location in the TransferConfig class so that it can be reused in other places like UploadPack. TransferConfig is also a more logical place for the setting as it resides in the `transfer` config section. Set the transfer.advertisesid setting to true to send the session-id capability to the client. Change-Id: If68ecb5e68b59f5c452a7992d02e3688b0a86747 Signed-off-by: Josh Brown --- .../jgit/transport/TransferConfigTest.java | 17 +++++++++++++++++ .../org/eclipse/jgit/transport/ReceivePack.java | 8 +------- .../eclipse/jgit/transport/TransferConfig.java | 12 ++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TransferConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TransferConfigTest.java index d9b85fb00..8dad571e5 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TransferConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TransferConfigTest.java @@ -11,6 +11,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import org.eclipse.jgit.lib.Config; import org.junit.Test; @@ -66,4 +68,19 @@ public void testParseProtocolInvalid() { TransferConfig tc = new TransferConfig(rc); assertNull(tc.protocolVersion); } + + @Test + public void testParseAdvertiseSIDDefault() { + Config rc = new Config(); + TransferConfig tc = new TransferConfig(rc); + assertFalse(tc.isAllowReceiveClientSID()); + } + + @Test + public void testParseAdvertiseSIDSet() { + Config rc = new Config(); + rc.setBoolean("transfer", null, "advertiseSID", true); + TransferConfig tc = new TransferConfig(rc); + assertTrue(tc.isAllowReceiveClientSID()); + } } 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 fe01ecc1f..816cec89a 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java @@ -312,6 +312,7 @@ public ReceivePack(Repository into) { TransferConfig tc = db.getConfig().get(TransferConfig.KEY); objectChecker = tc.newReceiveObjectChecker(); + allowReceiveClientSID = tc.isAllowReceiveClientSID(); ReceiveConfig rc = db.getConfig().get(ReceiveConfig::new); allowCreates = rc.allowCreates; @@ -320,7 +321,6 @@ public ReceivePack(Repository into) { allowNonFastForwards = rc.allowNonFastForwards; allowOfsDelta = rc.allowOfsDelta; allowPushOptions = rc.allowPushOptions; - allowReceiveClientSID = rc.allowReceiveClientSID; maxCommandBytes = rc.maxCommandBytes; maxDiscardBytes = rc.maxDiscardBytes; advertiseRefsHook = AdvertiseRefsHook.DEFAULT; @@ -344,8 +344,6 @@ private static class ReceiveConfig { final boolean allowPushOptions; - final boolean allowReceiveClientSID; - final long maxCommandBytes; final long maxDiscardBytes; @@ -361,10 +359,6 @@ private static class ReceiveConfig { true); allowPushOptions = config.getBoolean("receive", "pushoptions", //$NON-NLS-1$ //$NON-NLS-2$ false); - // TODO: This should not be enabled until the corresponding change to - // upload pack has been implemented. - allowReceiveClientSID = config.getBoolean("transfer", //$NON-NLS-1$ - "advertisesid", false); //$NON-NLS-1$ maxCommandBytes = config.getLong("receive", //$NON-NLS-1$ "maxCommandBytes", //$NON-NLS-1$ 3 << 20); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransferConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransferConfig.java index 02be43488..805166a40 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransferConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransferConfig.java @@ -125,6 +125,8 @@ static ProtocolVersion parse(@Nullable String name) { private final boolean advertiseWaitForDone; private final boolean advertiseObjectInfo; + private final boolean allowReceiveClientSID; + final @Nullable ProtocolVersion protocolVersion; final String[] hideRefs; @@ -214,6 +216,8 @@ public TransferConfig(Config rc) { "advertisewaitfordone", false); advertiseObjectInfo = rc.getBoolean("uploadpack", "advertiseobjectinfo", false); + allowReceiveClientSID = rc.getBoolean("transfer", "advertisesid", + false); } /** @@ -328,6 +332,14 @@ public boolean isAdvertiseObjectInfo() { return advertiseObjectInfo; } + /** + * @return true to advertise and receive session-id capability + * @since 6.4 + */ + public boolean isAllowReceiveClientSID() { + return allowReceiveClientSID; + } + /** * Get {@link org.eclipse.jgit.transport.RefFilter} respecting configured * hidden refs.