From: Jonathan Tan Date: Mon, 13 Aug 2018 23:57:25 +0000 (-0700) Subject: Respond with shallow-info before wanted-refs X-Git-Tag: v5.1.0.201808281540-m3~37 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F68%2F127368%2F1;p=jgit.git 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 --- diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java index 7ef713bf45..9c43c0b0a4 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java @@ -1367,13 +1367,13 @@ public class UploadPackTest { 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())); 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 c093e8b1db..3ad350d0db 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java @@ -1083,18 +1083,6 @@ public class UploadPack { } if (doneReceived || okToGiveUp()) { - if (!wantedRefs.isEmpty()) { - if (sectionSent) { - pckOut.writeDelim(); - } - pckOut.writeString("wanted-refs\n"); //$NON-NLS-1$ - for (Map.Entry entry : wantedRefs.entrySet()) { - pckOut.writeString(entry.getValue().getName() + ' ' + - entry.getKey() + '\n'); - } - sectionSent = true; - } - if (shallowCommits != null) { if (sectionSent) pckOut.writeDelim(); @@ -1108,6 +1096,18 @@ public class UploadPack { sectionSent = true; } + if (!wantedRefs.isEmpty()) { + if (sectionSent) { + pckOut.writeDelim(); + } + pckOut.writeString("wanted-refs\n"); //$NON-NLS-1$ + for (Map.Entry entry : wantedRefs.entrySet()) { + pckOut.writeString(entry.getValue().getName() + ' ' + + entry.getKey() + '\n'); + } + sectionSent = true; + } + if (sectionSent) pckOut.writeDelim(); pckOut.writeString("packfile\n"); //$NON-NLS-1$