diff options
author | Dave Borowitz <dborowitz@google.com> | 2013-06-18 15:07:19 -0700 |
---|---|---|
committer | Dave Borowitz <dborowitz@google.com> | 2013-07-03 15:09:55 -0700 |
commit | b4b84a84bd38eb88710e45a41fff2a8884dc2eb2 (patch) | |
tree | 27aad706929ae10f5e6caca3b9d45f41391beafc /org.eclipse.jgit/src/org | |
parent | fee679b587b189d6eec1948beb780ec44bc3e887 (diff) | |
download | jgit-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.java | 7 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java | 9 |
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(); |