Browse Source

Merge changes Ib0d8c294,Idfb83482

* changes:
  Shallow fetch: Pass along "shallow"s in unparsed-wants case, too
  Shallow fetch: Pass a DepthWalk to PackWriter

Change-Id: I7d1c3b4d0b7ebc254b53404d1618522b0174ac23
tags/v4.5.0.201609210915-r
Jonathan Nieder 7 years ago
parent
commit
3b0b7677ff

+ 23
- 2
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java View File

@@ -710,11 +710,32 @@ public class PackWriter implements AutoCloseable {
public void preparePack(ProgressMonitor countingMonitor,
@NonNull Set<? extends ObjectId> want,
@NonNull Set<? extends ObjectId> have) throws IOException {
preparePack(countingMonitor,
want, have, Collections.<ObjectId> emptySet());
}

/**
* Prepare the list of objects to be written to the pack stream.
* <p>
* Like {@link #preparePack(ProgressMonitor, Set, Set)} but also allows
* specifying commits that should not be walked past ("shallow" commits).
* The caller is responsible for filtering out commits that should not
* be shallow any more ("unshallow" commits as in {@link #setShallowPack})
* from the shallow set.
*
* @since 4.5
*/
public void preparePack(ProgressMonitor countingMonitor,
@NonNull Set<? extends ObjectId> want,
@NonNull Set<? extends ObjectId> have,
@NonNull Set<? extends ObjectId> shallow) throws IOException {
ObjectWalk ow;
if (shallowPack)
if (shallowPack) {
ow = new DepthWalk.ObjectWalk(reader, depth - 1);
else
} else {
ow = new ObjectWalk(reader);
}
ow.assumeShallow(shallow);
preparePack(countingMonitor, ow, want, have);
}


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

@@ -1493,16 +1493,19 @@ public class UploadPack {
pw.setTagTargets(tagTargets);
}

if (depth > 0)
RevWalk rw = walk;
if (depth > 0) {
pw.setShallowPack(depth, unshallowCommits);
rw = new DepthWalk.RevWalk(walk.getObjectReader(), depth - 1);
rw.assumeShallow(clientShallowCommits);
}

RevWalk rw = walk;
if (wantAll.isEmpty()) {
pw.preparePack(pm, wantIds, commonBase);
pw.preparePack(pm, wantIds, commonBase, clientShallowCommits);
} else {
walk.reset();

ObjectWalk ow = walk.toObjectWalkWithSameObjects();
ObjectWalk ow = rw.toObjectWalkWithSameObjects();
pw.preparePack(pm, ow, wantAll, commonBase);
rw = ow;
}

Loading…
Cancel
Save