|
|
@@ -144,29 +144,30 @@ final class ProtocolV2Parser { |
|
|
|
} |
|
|
|
|
|
|
|
boolean filterReceived = false; |
|
|
|
while ((line = pckIn.readString()) != PacketLineIn.END) { |
|
|
|
if (line.startsWith("want ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addWantId(ObjectId.fromString(line.substring(5))); |
|
|
|
for (String line2 : pckIn.readStrings()) { |
|
|
|
if (line2.startsWith("want ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addWantId(ObjectId.fromString(line2.substring(5))); |
|
|
|
} else if (transferConfig.isAllowRefInWant() |
|
|
|
&& line.startsWith(OPTION_WANT_REF + " ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addWantedRef(line.substring(OPTION_WANT_REF.length() + 1)); |
|
|
|
} else if (line.startsWith("have ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addPeerHas(ObjectId.fromString(line.substring(5))); |
|
|
|
} else if (line.equals("done")) { //$NON-NLS-1$ |
|
|
|
&& line2.startsWith(OPTION_WANT_REF + " ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addWantedRef( |
|
|
|
line2.substring(OPTION_WANT_REF.length() + 1)); |
|
|
|
} else if (line2.startsWith("have ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addPeerHas(ObjectId.fromString(line2.substring(5))); |
|
|
|
} else if (line2.equals("done")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.setDoneReceived(); |
|
|
|
} else if (line.equals(OPTION_THIN_PACK)) { |
|
|
|
} else if (line2.equals(OPTION_THIN_PACK)) { |
|
|
|
reqBuilder.addClientCapability(OPTION_THIN_PACK); |
|
|
|
} else if (line.equals(OPTION_NO_PROGRESS)) { |
|
|
|
} else if (line2.equals(OPTION_NO_PROGRESS)) { |
|
|
|
reqBuilder.addClientCapability(OPTION_NO_PROGRESS); |
|
|
|
} else if (line.equals(OPTION_INCLUDE_TAG)) { |
|
|
|
} else if (line2.equals(OPTION_INCLUDE_TAG)) { |
|
|
|
reqBuilder.addClientCapability(OPTION_INCLUDE_TAG); |
|
|
|
} else if (line.equals(OPTION_OFS_DELTA)) { |
|
|
|
} else if (line2.equals(OPTION_OFS_DELTA)) { |
|
|
|
reqBuilder.addClientCapability(OPTION_OFS_DELTA); |
|
|
|
} else if (line.startsWith("shallow ")) { //$NON-NLS-1$ |
|
|
|
} else if (line2.startsWith("shallow ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addClientShallowCommit( |
|
|
|
ObjectId.fromString(line.substring(8))); |
|
|
|
} else if (line.startsWith("deepen ")) { //$NON-NLS-1$ |
|
|
|
int parsedDepth = Integer.parseInt(line.substring(7)); |
|
|
|
ObjectId.fromString(line2.substring(8))); |
|
|
|
} else if (line2.startsWith("deepen ")) { //$NON-NLS-1$ |
|
|
|
int parsedDepth = Integer.parseInt(line2.substring(7)); |
|
|
|
if (parsedDepth <= 0) { |
|
|
|
throw new PackProtocolException( |
|
|
|
MessageFormat.format(JGitText.get().invalidDepth, |
|
|
@@ -181,19 +182,19 @@ final class ProtocolV2Parser { |
|
|
|
JGitText.get().deepenNotWithDeepen); |
|
|
|
} |
|
|
|
reqBuilder.setDepth(parsedDepth); |
|
|
|
} else if (line.startsWith("deepen-not ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addDeepenNotRef(line.substring(11)); |
|
|
|
} else if (line2.startsWith("deepen-not ")) { //$NON-NLS-1$ |
|
|
|
reqBuilder.addDeepenNotRef(line2.substring(11)); |
|
|
|
if (reqBuilder.getDepth() != 0) { |
|
|
|
throw new PackProtocolException( |
|
|
|
JGitText.get().deepenNotWithDeepen); |
|
|
|
} |
|
|
|
} else if (line.equals(OPTION_DEEPEN_RELATIVE)) { |
|
|
|
} else if (line2.equals(OPTION_DEEPEN_RELATIVE)) { |
|
|
|
reqBuilder.addClientCapability(OPTION_DEEPEN_RELATIVE); |
|
|
|
} else if (line.startsWith("deepen-since ")) { //$NON-NLS-1$ |
|
|
|
int ts = Integer.parseInt(line.substring(13)); |
|
|
|
} else if (line2.startsWith("deepen-since ")) { //$NON-NLS-1$ |
|
|
|
int ts = Integer.parseInt(line2.substring(13)); |
|
|
|
if (ts <= 0) { |
|
|
|
throw new PackProtocolException(MessageFormat |
|
|
|
.format(JGitText.get().invalidTimestamp, line)); |
|
|
|
.format(JGitText.get().invalidTimestamp, line2)); |
|
|
|
} |
|
|
|
if (reqBuilder.getDepth() != 0) { |
|
|
|
throw new PackProtocolException( |
|
|
@@ -201,17 +202,17 @@ final class ProtocolV2Parser { |
|
|
|
} |
|
|
|
reqBuilder.setDeepenSince(ts); |
|
|
|
} else if (transferConfig.isAllowFilter() |
|
|
|
&& line.startsWith(OPTION_FILTER + ' ')) { |
|
|
|
&& line2.startsWith(OPTION_FILTER + ' ')) { |
|
|
|
if (filterReceived) { |
|
|
|
throw new PackProtocolException( |
|
|
|
JGitText.get().tooManyFilters); |
|
|
|
} |
|
|
|
filterReceived = true; |
|
|
|
reqBuilder.setFilterSpec(FilterSpec.fromFilterLine( |
|
|
|
line.substring(OPTION_FILTER.length() + 1))); |
|
|
|
line2.substring(OPTION_FILTER.length() + 1))); |
|
|
|
} else { |
|
|
|
throw new PackProtocolException(MessageFormat |
|
|
|
.format(JGitText.get().unexpectedPacketLine, line)); |
|
|
|
.format(JGitText.get().unexpectedPacketLine, line2)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -253,16 +254,16 @@ final class ProtocolV2Parser { |
|
|
|
.format(JGitText.get().unexpectedPacketLine, line)); |
|
|
|
} |
|
|
|
|
|
|
|
while ((line = pckIn.readString()) != PacketLineIn.END) { |
|
|
|
if (line.equals("peel")) { //$NON-NLS-1$ |
|
|
|
for (String line2 : pckIn.readStrings()) { |
|
|
|
if (line2.equals("peel")) { //$NON-NLS-1$ |
|
|
|
builder.setPeel(true); |
|
|
|
} else if (line.equals("symrefs")) { //$NON-NLS-1$ |
|
|
|
} else if (line2.equals("symrefs")) { //$NON-NLS-1$ |
|
|
|
builder.setSymrefs(true); |
|
|
|
} else if (line.startsWith("ref-prefix ")) { //$NON-NLS-1$ |
|
|
|
prefixes.add(line.substring("ref-prefix ".length())); //$NON-NLS-1$ |
|
|
|
} else if (line2.startsWith("ref-prefix ")) { //$NON-NLS-1$ |
|
|
|
prefixes.add(line2.substring("ref-prefix ".length())); //$NON-NLS-1$ |
|
|
|
} else { |
|
|
|
throw new PackProtocolException(MessageFormat |
|
|
|
.format(JGitText.get().unexpectedPacketLine, line)); |
|
|
|
.format(JGitText.get().unexpectedPacketLine, line2)); |
|
|
|
} |
|
|
|
} |
|
|
|
|