Shallow fetch: Pass a DepthWalk to PackWriter

d385a7a5e5 (Shallow fetch: Respect "shallow" lines, 2016-08-03) forgot
that UploadPack wasn't passing a DepthWalk to PackWriter in the first
place.  As a result, shallow clones fail:

  java.lang.IllegalArgumentException: Shallow packs require a DepthWalk
        at org.eclipse.jgit.internal.storage.pack.PackWriter.preparePack(PackWriter.java:756)
        at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1497)
        at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1381)
        at org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:774)
        at org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:667)
        at org.eclipse.jgit.http.server.UploadPackServlet.doPost(UploadPackServlet.java:191)

Change-Id: Ib0d8c2946eebfea910a2b767fb92e23da15d4749
This commit is contained in:
Jonathan Nieder 2016-08-08 12:31:39 -07:00
parent d385a7a5e5
commit f84370feaa
1 changed files with 7 additions and 4 deletions

View File

@ -1484,16 +1484,19 @@ else if (ref.getName().startsWith(Constants.R_HEADS))
pw.setTagTargets(tagTargets);
}
if (depth > 0)
pw.setShallowPack(depth, unshallowCommits);
RevWalk rw = walk;
if (depth > 0) {
pw.setShallowPack(depth, unshallowCommits);
rw = new DepthWalk.RevWalk(walk.getObjectReader(), depth);
rw.assumeShallow(clientShallowCommits);
}
if (wantAll.isEmpty()) {
pw.preparePack(pm, wantIds, commonBase);
} else {
walk.reset();
ObjectWalk ow = walk.toObjectWalkWithSameObjects();
ObjectWalk ow = rw.toObjectWalkWithSameObjects();
pw.preparePack(pm, ow, wantAll, commonBase);
rw = ow;
}