Merge branch 'stable-6.0'

* stable-6.0:
  UploadPack v2 protocol: Stop negotiation for orphan refs
  Complete update to servlet api 4.0.0

Change-Id: I55ab6e8fd4a76e4313e37b12f9fc5d5e4b84a681
This commit is contained in:
Matthias Sohn 2022-01-18 18:09:03 +01:00
commit d017a655df
4 changed files with 63 additions and 3 deletions

View File

@ -171,8 +171,8 @@ maven_jar(
maven_jar(
name = "servlet-api",
artifact = "javax.servlet:javax.servlet-api:3.1.0",
sha1 = "3cd63d075497751784b2fa84be59432f4905bf7c",
artifact = "javax.servlet:javax.servlet-api:4.0.0",
sha1 = "60200affc2fe0165136ed3690faf00b66aed581a",
)
maven_jar(

View File

@ -1106,6 +1106,61 @@ public void testV2FetchWithWaitForDoneOnlyDoesNegotiationAndNothingToAck()
assertTrue(PacketLineIn.isEnd(pckIn.readString()));
}
@Test
public void testV2FetchServerStopsNegotiationForRefWithoutParents()
throws Exception {
RevCommit fooCommit = remote.commit().message("x").create();
RevCommit barCommit = remote.commit().message("y").create();
remote.update("refs/changes/01/1/1", fooCommit);
remote.update("refs/changes/02/2/1", barCommit);
ByteArrayInputStream recvStream = uploadPackV2("command=fetch\n",
PacketLineIn.delimiter(),
"want " + fooCommit.toObjectId().getName() + "\n",
"have " + barCommit.toObjectId().getName() + "\n",
PacketLineIn.end());
PacketLineIn pckIn = new PacketLineIn(recvStream);
assertThat(pckIn.readString(), is("acknowledgments"));
assertThat(pckIn.readString(),
is("ACK " + barCommit.toObjectId().getName()));
assertThat(pckIn.readString(), is("ready"));
assertTrue(PacketLineIn.isDelimiter(pckIn.readString()));
assertThat(pckIn.readString(), is("packfile"));
parsePack(recvStream);
assertTrue(client.getObjectDatabase().has(fooCommit.toObjectId()));
}
@Test
public void testV2FetchServerDoesNotStopNegotiationWhenOneRefWithoutParentAndOtherWithParents()
throws Exception {
RevCommit fooCommit = remote.commit().message("x").create();
RevCommit barParent = remote.commit().message("y").create();
RevCommit barChild = remote.commit().message("y").parent(barParent)
.create();
RevCommit fooBarParent = remote.commit().message("z").create();
RevCommit fooBarChild = remote.commit().message("y")
.parent(fooBarParent)
.create();
remote.update("refs/changes/01/1/1", fooCommit);
remote.update("refs/changes/02/2/1", barChild);
remote.update("refs/changes/03/3/1", fooBarChild);
ByteArrayInputStream recvStream = uploadPackV2("command=fetch\n",
PacketLineIn.delimiter(),
"want " + fooCommit.toObjectId().getName() + "\n",
"want " + barChild.toObjectId().getName() + "\n",
"want " + fooBarChild.toObjectId().getName() + "\n",
"have " + fooBarParent.toObjectId().getName() + "\n",
PacketLineIn.end());
PacketLineIn pckIn = new PacketLineIn(recvStream);
assertThat(pckIn.readString(), is("acknowledgments"));
assertThat(pckIn.readString(),
is("ACK " + fooBarParent.toObjectId().getName()));
assertTrue(PacketLineIn.isEnd(pckIn.readString()));
}
@Test
public void testV2FetchThinPack() throws Exception {
String commonInBlob = "abcdefghijklmnopqrstuvwxyz";

View File

@ -2175,6 +2175,11 @@ private boolean wantSatisfied(RevObject want) throws IOException {
if (want.has(SATISFIED))
return true;
if (((RevCommit) want).getParentCount() == 0) {
want.add(SATISFIED);
return true;
}
walk.resetRetain(SAVE);
walk.markStart((RevCommit) want);
if (oldestTime != 0)

View File

@ -161,7 +161,7 @@
<args4j-version>2.33</args4j-version>
<commons-compress-version>1.21</commons-compress-version>
<osgi-core-version>4.3.1</osgi-core-version>
<servlet-api-version>3.1.0</servlet-api-version>
<servlet-api-version>4.0.0</servlet-api-version>
<jetty-version>10.0.6</jetty-version>
<japicmp-version>0.15.3</japicmp-version>
<httpclient-version>4.5.13</httpclient-version>