浏览代码

ReceivePack: integrate push option parsing into recvCommands

This allows the same try/catch to handle parsing the command list,
push certificate and push options. Any errors will be caught and
handled by the same catch block, as the client is in the same state.

Change-Id: I13a66f9100e2dc8ca8f72cd701a5bd44d093ec84
tags/v4.5.0.201609210915-r
Shawn Pearce 7 年前
父节点
当前提交
3100662a5a

+ 13
- 0
org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java 查看文件

@@ -1171,6 +1171,9 @@ public abstract class BaseReceivePack {
}
}
pushCert = certParser.build();
if (hasCommands()) {
readPostCommands(pckIn);
}
} catch (PackProtocolException e) {
if (sideBand) {
try {
@@ -1217,6 +1220,16 @@ public abstract class BaseReceivePack {
return new ReceiveCommand(oldId, newId, name);
}

/**
* @param in
* request stream.
* @throws IOException
* request line cannot be read.
*/
void readPostCommands(PacketLineIn in) throws IOException {
// Do nothing by default.
}

/** Enable capabilities based on a previously read capabilities line. */
protected void enableCapabilities() {
sideBand = isCapabilityEnabled(CAPABILITY_SIDE_BAND_64K);

+ 10
- 11
org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java 查看文件

@@ -220,14 +220,17 @@ public class ReceivePack extends BaseReceivePack {
super.enableCapabilities();
}

private void readPushOptions() throws IOException {
pushOptions = new ArrayList<>(4);
for (;;) {
String option = pckIn.readString();
if (option == PacketLineIn.END) {
break;
@Override
void readPostCommands(PacketLineIn in) throws IOException {
if (usePushOptions) {
pushOptions = new ArrayList<>(4);
for (;;) {
String option = in.readString();
if (option == PacketLineIn.END) {
break;
}
pushOptions.add(option);
}
pushOptions.add(option);
}
}

@@ -241,10 +244,6 @@ public class ReceivePack extends BaseReceivePack {
return;
recvCommands();
if (hasCommands()) {
if (usePushOptions) {
readPushOptions();
}

Throwable unpackError = null;
if (needPack()) {
try {

正在加载...
取消
保存