Browse Source

Merge "Improve native Git transport when following repository"

tags/v0.12.1
Chris Aniszczyk 13 years ago
parent
commit
8aef29c114

+ 4
- 1
org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java View File

int havesSinceLastContinue = 0; int havesSinceLastContinue = 0;
boolean receivedContinue = false; boolean receivedContinue = false;
boolean receivedAck = false; boolean receivedAck = false;
boolean negotiate = true;


if (statelessRPC) if (statelessRPC)
state.writeTo(out, null); state.writeTo(out, null);


negotiateBegin(); negotiateBegin();
SEND_HAVES: for (;;) {
SEND_HAVES: while (negotiate) {
final RevCommit c = walk.next(); final RevCommit c = walk.next();
if (c == null) if (c == null)
break SEND_HAVES; break SEND_HAVES;
receivedAck = true; receivedAck = true;
receivedContinue = true; receivedContinue = true;
havesSinceLastContinue = 0; havesSinceLastContinue = 0;
if (anr == AckNackResult.ACK_READY)
negotiate = false;
break; break;
} }



+ 7
- 0
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java View File

// create a pack at this point, let the client know so it stops // create a pack at this point, let the client know so it stops
// telling us about its history. // telling us about its history.
// //
boolean didOkToGiveUp = false;
for (int i = peerHas.size() - 1; i >= 0; i--) { for (int i = peerHas.size() - 1; i >= 0; i--) {
ObjectId id = peerHas.get(i); ObjectId id = peerHas.get(i);
if (walk.lookupOrNull(id) == null) { if (walk.lookupOrNull(id) == null) {
didOkToGiveUp = true;
if (okToGiveUp()) { if (okToGiveUp()) {
switch (multiAck) { switch (multiAck) {
case OFF: case OFF:
} }
} }


if (multiAck == MultiAck.DETAILED && !didOkToGiveUp && okToGiveUp()) {
ObjectId id = peerHas.get(peerHas.size() - 1);
pckOut.writeString("ACK " + id.name() + " ready\n");
}

peerHas.clear(); peerHas.clear();
return last; return last;
} }

Loading…
Cancel
Save