|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -164,6 +167,13 @@ public final class FetchV2Request {
|
|
|
|
|
return filterBlobLimit; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -323,13 +335,22 @@ public final class FetchV2Request {
|
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|