diff options
author | Jonathan Tan <jonathantanmy@google.com> | 2018-04-30 13:21:43 -0700 |
---|---|---|
committer | Jonathan Nieder <jrn@google.com> | 2018-06-04 22:09:07 -0700 |
commit | 7dbd2bfe7e0598097cf35aedd700d86b468bec7d (patch) | |
tree | 86fe7a44b54b68e7503ec12da695ccb644e5e8ca /org.eclipse.jgit | |
parent | c9d4609ecbe3e8ed74f8fc169d541a1d7c8c5f15 (diff) | |
download | jgit-7dbd2bfe7e0598097cf35aedd700d86b468bec7d.tar.gz jgit-7dbd2bfe7e0598097cf35aedd700d86b468bec7d.zip |
Teach UploadPack "filter" in protocol v2 fetch
If the configuration variable uploadpack.allowfilter is true, advertise
that "filter" is supported, and support it if the client sends such an
argument.
Change-Id: I7de66c0a0ada46ff71c5ba124d4ffa7c47254c3b
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java | 13 |
1 files changed, 12 insertions, 1 deletions
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 ea6bd3a91e..f70ead9294 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java @@ -958,6 +958,7 @@ public class UploadPack { } boolean includeTag = false; + boolean filterReceived = false; while ((line = pckIn.readString()) != PacketLineIn.END) { if (line.startsWith("want ")) { //$NON-NLS-1$ wantIds.add(ObjectId.fromString(line.substring(5))); @@ -1014,6 +1015,13 @@ public class UploadPack { throw new PackProtocolException( JGitText.get().deepenSinceWithDeepen); } + } else if (transferConfig.isAllowFilter() + && line.startsWith(OPTION_FILTER + ' ')) { + if (filterReceived) { + throw new PackProtocolException(JGitText.get().tooManyFilters); + } + filterReceived = true; + parseFilter(line.substring(OPTION_FILTER.length() + 1)); } else { throw new PackProtocolException(MessageFormat .format(JGitText.get().unexpectedPacketLine, line)); @@ -1113,7 +1121,10 @@ public class UploadPack { ArrayList<String> caps = new ArrayList<>(); caps.add("version 2"); //$NON-NLS-1$ caps.add(COMMAND_LS_REFS); - caps.add(COMMAND_FETCH + '=' + OPTION_SHALLOW); + caps.add( + COMMAND_FETCH + '=' + + (transferConfig.isAllowFilter() ? OPTION_FILTER + ' ' : "") + //$NON-NLS-1$ + OPTION_SHALLOW); return caps; } |