Respond with shallow-info before wanted-refs
When fetching with protocol v2, git expects the shallow-info section to appear before wanted-refs if both appear in the response. Teach UploadPack to do this. Change-Id: Ie26a91edcce5d27a1d727d7fba5c30e1144e118b Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
This commit is contained in:
parent
d1dc49e968
commit
3227348e5e
|
@ -1367,13 +1367,13 @@ public void testV2FetchWantRefAndDeepen() throws Exception {
|
|||
PacketLineIn.END);
|
||||
PacketLineIn pckIn = new PacketLineIn(recvStream);
|
||||
|
||||
// wanted-refs appears first, then shallow-info.
|
||||
assertThat(pckIn.readString(), is("wanted-refs"));
|
||||
assertThat(pckIn.readString(), is(child.toObjectId().getName() + " refs/heads/branch1"));
|
||||
assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM));
|
||||
// shallow-info appears first, then wanted-refs.
|
||||
assertThat(pckIn.readString(), is("shallow-info"));
|
||||
assertThat(pckIn.readString(), is("shallow " + child.toObjectId().getName()));
|
||||
assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM));
|
||||
assertThat(pckIn.readString(), is("wanted-refs"));
|
||||
assertThat(pckIn.readString(), is(child.toObjectId().getName() + " refs/heads/branch1"));
|
||||
assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM));
|
||||
assertThat(pckIn.readString(), is("packfile"));
|
||||
parsePack(recvStream);
|
||||
assertTrue(client.hasObject(child.toObjectId()));
|
||||
|
|
|
@ -1083,18 +1083,6 @@ private void fetchV2() throws IOException {
|
|||
}
|
||||
|
||||
if (doneReceived || okToGiveUp()) {
|
||||
if (!wantedRefs.isEmpty()) {
|
||||
if (sectionSent) {
|
||||
pckOut.writeDelim();
|
||||
}
|
||||
pckOut.writeString("wanted-refs\n"); //$NON-NLS-1$
|
||||
for (Map.Entry<String, ObjectId> entry : wantedRefs.entrySet()) {
|
||||
pckOut.writeString(entry.getValue().getName() + ' ' +
|
||||
entry.getKey() + '\n');
|
||||
}
|
||||
sectionSent = true;
|
||||
}
|
||||
|
||||
if (shallowCommits != null) {
|
||||
if (sectionSent)
|
||||
pckOut.writeDelim();
|
||||
|
@ -1108,6 +1096,18 @@ private void fetchV2() throws IOException {
|
|||
sectionSent = true;
|
||||
}
|
||||
|
||||
if (!wantedRefs.isEmpty()) {
|
||||
if (sectionSent) {
|
||||
pckOut.writeDelim();
|
||||
}
|
||||
pckOut.writeString("wanted-refs\n"); //$NON-NLS-1$
|
||||
for (Map.Entry<String, ObjectId> entry : wantedRefs.entrySet()) {
|
||||
pckOut.writeString(entry.getValue().getName() + ' ' +
|
||||
entry.getKey() + '\n');
|
||||
}
|
||||
sectionSent = true;
|
||||
}
|
||||
|
||||
if (sectionSent)
|
||||
pckOut.writeDelim();
|
||||
pckOut.writeString("packfile\n"); //$NON-NLS-1$
|
||||
|
|
Loading…
Reference in New Issue