diff options
author | Jonathan Nieder <jrn@google.com> | 2018-08-31 14:11:59 -0400 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2018-08-31 14:11:59 -0400 |
commit | eb9a0c1983d8d5f0b0e933988b6efc1c453e3068 (patch) | |
tree | 503ee0f78408d47b6910323b6333f27dcfd1740a | |
parent | 6196eb682547e0d17ca5e7f132bce43d25049603 (diff) | |
parent | 04d27cf70fb51ba6ffb1ca353fe81160fbef6883 (diff) | |
download | jgit-eb9a0c1983d8d5f0b0e933988b6efc1c453e3068.tar.gz jgit-eb9a0c1983d8d5f0b0e933988b6efc1c453e3068.zip |
Merge "FetchV2Request round up (doneReceived, renamings)"
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchV2Request.java | 53 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java | 19 |
2 files changed, 46 insertions, 26 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchV2Request.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchV2Request.java index 188c0e0570..e633ca420f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchV2Request.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchV2Request.java @@ -71,7 +71,7 @@ public final class FetchV2Request { private final int shallowSince; - private final List<String> shallowExcludeRefs; + private final List<String> deepenNotRefs; private final int depth; @@ -79,19 +79,22 @@ public final class FetchV2Request { private final Set<String> options; + private final boolean doneReceived; + private FetchV2Request(List<ObjectId> peerHas, TreeMap<String, ObjectId> wantedRefs, Set<ObjectId> wantsIds, Set<ObjectId> clientShallowCommits, int shallowSince, - List<String> shallowExcludeRefs, int depth, long filterBlobLimit, - Set<String> options) { + List<String> deependNotRefs, int depth, long filterBlobLimit, + boolean doneReceived, Set<String> options) { this.peerHas = peerHas; this.wantedRefs = wantedRefs; this.wantsIds = wantsIds; this.clientShallowCommits = clientShallowCommits; this.shallowSince = shallowSince; - this.shallowExcludeRefs = shallowExcludeRefs; + this.deepenNotRefs = deependNotRefs; this.depth = depth; this.filterBlobLimit = filterBlobLimit; + this.doneReceived = doneReceived; this.options = options; } @@ -135,8 +138,8 @@ public final class FetchV2Request { * The value in a "deepen-since" line in the request, indicating the * timestamp where to stop fetching/cloning. * - * @return timestamp where to stop the shallow fetch/clone. Defaults to 0 if - * not set in the request + * @return timestamp in seconds since the epoch, where to stop the shallow + * fetch/clone. Defaults to 0 if not set in the request. */ int getShallowSince() { return shallowSince; @@ -146,8 +149,8 @@ public final class FetchV2Request { * @return the refs in "deepen-not" lines in the request. */ @NonNull - List<String> getShallowExcludeRefs() { - return shallowExcludeRefs; + List<String> getDeepenNotRefs() { + return deepenNotRefs; } /** @@ -165,6 +168,13 @@ public final class FetchV2Request { } /** + * @return true if the request had a "done" line + */ + boolean wasDoneReceived() { + return doneReceived; + } + + /** * Options that tune the expected response from the server, like * "thin-pack", "no-progress" or "ofs-delta" * @@ -194,7 +204,7 @@ public final class FetchV2Request { Set<ObjectId> clientShallowCommits = new HashSet<>(); - List<String> shallowExcludeRefs = new ArrayList<>(); + List<String> deepenNotRefs = new ArrayList<>(); Set<String> options = new HashSet<>(); @@ -204,6 +214,8 @@ public final class FetchV2Request { long filterBlobLimit = -1; + boolean doneReceived; + private Builder() { } @@ -282,16 +294,16 @@ public final class FetchV2Request { /** * @return if there has been any "deepen not" line in the request */ - boolean hasShallowExcludeRefs() { - return shallowExcludeRefs.size() > 0; + boolean hasDeepenNotRefs() { + return !deepenNotRefs.isEmpty(); } /** - * @param shallowExcludeRef reference in a "deepen not" line + * @param deepenNotRef reference in a "deepen not" line * @return the builder */ - Builder addShallowExcludeRefs(String shallowExcludeRef) { - this.shallowExcludeRefs.add(shallowExcludeRef); + Builder addDeepenNotRef(String deepenNotRef) { + this.deepenNotRefs.add(deepenNotRef); return this; } @@ -324,12 +336,21 @@ public final class FetchV2Request { } /** + * Mark that the "done" line has been received. + * + * @return the builder + */ + Builder setDoneReceived() { + this.doneReceived = true; + return this; + } + /** * @return Initialized fetch request */ FetchV2Request build() { return new FetchV2Request(peerHas, wantedRefs, wantsIds, - clientShallowCommits, shallowSince, shallowExcludeRefs, - depth, filterBlobLimit, options); + clientShallowCommits, shallowSince, deepenNotRefs, + depth, filterBlobLimit, doneReceived, options); } } } 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 03fc57cba2..41883c98a2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java @@ -311,7 +311,7 @@ public class UploadPack { * not to send using --shallow-exclude. Cannot be non-empty if depth is * nonzero. */ - private List<String> shallowExcludeRefs = new ArrayList<>(); + private List<String> deepenNotRefs = new ArrayList<>(); /** Commit time of the oldest common commit, in seconds. */ private int oldestTime; @@ -963,7 +963,6 @@ public class UploadPack { } String line; - boolean doneReceived = false; // Currently, we do not support any capabilities, so the next // line is DELIM. @@ -997,7 +996,7 @@ public class UploadPack { } else if (line.startsWith("have ")) { //$NON-NLS-1$ reqBuilder.addPeerHas(ObjectId.fromString(line.substring(5))); } else if (line.equals("done")) { //$NON-NLS-1$ - doneReceived = true; + reqBuilder.setDoneReceived(); } else if (line.equals(OPTION_THIN_PACK)) { reqBuilder.addOption(OPTION_THIN_PACK); } else if (line.equals(OPTION_NO_PROGRESS)) { @@ -1021,13 +1020,13 @@ public class UploadPack { throw new PackProtocolException( JGitText.get().deepenSinceWithDeepen); } - if (reqBuilder.hasShallowExcludeRefs()) { + if (reqBuilder.hasDeepenNotRefs()) { throw new PackProtocolException( JGitText.get().deepenNotWithDeepen); } reqBuilder.setDepth(parsedDepth); } else if (line.startsWith("deepen-not ")) { //$NON-NLS-1$ - reqBuilder.addShallowExcludeRefs(line.substring(11)); + reqBuilder.addDeepenNotRef(line.substring(11)); if (reqBuilder.getDepth() != 0) { throw new PackProtocolException( JGitText.get().deepenNotWithDeepen); @@ -1072,7 +1071,7 @@ public class UploadPack { depth = req.getDepth(); shallowSince = req.getShallowSince(); filterBlobLimit = req.getFilterBlobLimit(); - shallowExcludeRefs = req.getShallowExcludeRefs(); + deepenNotRefs = req.getDeepenNotRefs(); boolean sectionSent = false; @Nullable List<ObjectId> shallowCommits = null; @@ -1082,14 +1081,14 @@ public class UploadPack { verifyClientShallow(req.getClientShallowCommits()); } if (req.getDepth() != 0 || req.getShallowSince() != 0 - || !req.getShallowExcludeRefs().isEmpty()) { + || !req.getDeepenNotRefs().isEmpty()) { shallowCommits = new ArrayList<>(); processShallow(shallowCommits, unshallowCommits, false); } if (!req.getClientShallowCommits().isEmpty()) walk.assumeShallow(req.getClientShallowCommits()); - if (doneReceived) { + if (req.wasDoneReceived()) { processHaveLines(req.getPeerHas(), ObjectId.zeroId(), new PacketLineOut(NullOutputStream.INSTANCE)); } else { @@ -1109,7 +1108,7 @@ public class UploadPack { sectionSent = true; } - if (doneReceived || okToGiveUp()) { + if (req.wasDoneReceived() || okToGiveUp()) { if (shallowCommits != null) { if (sectionSent) pckOut.writeDelim(); @@ -1252,7 +1251,7 @@ public class UploadPack { boolean writeToPckOut) throws IOException { if (options.contains(OPTION_DEEPEN_RELATIVE) || shallowSince != 0 || - !shallowExcludeRefs.isEmpty()) { + !deepenNotRefs.isEmpty()) { // TODO(jonathantanmy): Implement deepen-relative, deepen-since, // and deepen-not. throw new UnsupportedOperationException(); |