aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2013-06-18 15:07:19 -0700
committerDave Borowitz <dborowitz@google.com>2013-07-03 15:09:55 -0700
commitb4b84a84bd38eb88710e45a41fff2a8884dc2eb2 (patch)
tree27aad706929ae10f5e6caca3b9d45f41391beafc /org.eclipse.jgit/src/org
parentfee679b587b189d6eec1948beb780ec44bc3e887 (diff)
downloadjgit-b4b84a84bd38eb88710e45a41fff2a8884dc2eb2.tar.gz
jgit-b4b84a84bd38eb88710e45a41fff2a8884dc2eb2.zip
UploadPack: advertise allow-tip-sha1-in-want
This protocol capability, new in C git 1.8.2, corresponds to RequestPolicy.TIP, so advertise it if that request policy was set. Change-Id: I0d52af8a7747e951a87f060a5124f822ce1b2b26
Diffstat (limited to 'org.eclipse.jgit/src/org')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java9
2 files changed, 14 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
index c82a0cde81..1b13d0ba2a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
@@ -181,6 +181,13 @@ public abstract class BasePackFetchConnection extends BasePackConnection
*/
public static final String OPTION_NO_DONE = "no-done"; //$NON-NLS-1$
+ /**
+ * The client supports fetching objects at the tip of any ref, even if not
+ * advertised.
+ * @since 3.1
+ */
+ public static final String OPTION_ALLOW_TIP_SHA1_IN_WANT = "allow-tip-sha1-in-want"; //$NON-NLS-1$
+
static enum MultiAck {
OFF, CONTINUE, DETAILED;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 6ed6bcb594..7f35eacafe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -90,6 +90,8 @@ import org.eclipse.jgit.util.io.TimeoutOutputStream;
* Implements the server side of a fetch connection, transmitting objects.
*/
public class UploadPack {
+ static final String OPTION_ALLOW_TIP_SHA1_IN_WANT = BasePackFetchConnection.OPTION_ALLOW_TIP_SHA1_IN_WANT;
+
static final String OPTION_INCLUDE_TAG = BasePackFetchConnection.OPTION_INCLUDE_TAG;
static final String OPTION_MULTI_ACK = BasePackFetchConnection.OPTION_MULTI_ACK;
@@ -122,8 +124,8 @@ public class UploadPack {
REACHABLE_COMMIT,
/**
- * Client may ask for objects that are the tip of some reference, even if
- * that reference wasn't advertised.
+ * Client may ask for objects that are the tip of any reference, even if not
+ * advertised.
* <p>
* This may happen, for example, when a custom {@link RefFilter} is set.
*/
@@ -722,6 +724,9 @@ public class UploadPack {
adv.advertiseCapability(OPTION_SHALLOW);
if (!biDirectionalPipe)
adv.advertiseCapability(OPTION_NO_DONE);
+ if (requestPolicy == RequestPolicy.TIP
+ || requestPolicy == RequestPolicy.REACHABLE_COMMIT_TIP)
+ adv.advertiseCapability(OPTION_ALLOW_TIP_SHA1_IN_WANT);
adv.setDerefTags(true);
advertised = adv.send(getAdvertisedOrDefaultRefs());
adv.end();