Thread (329 messages) 329 messages, 12 authors, 2018-03-14

Re: [PATCH v3 22/35] upload-pack: support shallow requests

From: Stefan Beller <hidden>
Date: 2018-02-07 19:00:44

On Tue, Feb 6, 2018 at 5:12 PM, Brandon Williams [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Add the 'shallow' feature to the protocol version 2 command 'fetch'
which indicates that the server supports shallow clients and deepen
requets.

Signed-off-by: Brandon Williams <redacted>
---
 Documentation/technical/protocol-v2.txt |  67 +++++++++++++++-
 serve.c                                 |   2 +-
 t/t5701-git-serve.sh                    |   2 +-
 upload-pack.c                           | 138 +++++++++++++++++++++++---------
 upload-pack.h                           |   3 +
 5 files changed, 173 insertions(+), 39 deletions(-)
diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
index 4d5096dae..fedeb6b77 100644
--- a/Documentation/technical/protocol-v2.txt
+++ b/Documentation/technical/protocol-v2.txt
@@ -201,12 +201,42 @@ packet-lines:
        to its base by position in pack rather than by an oid.  That is,
        they can read OBJ_OFS_DELTA (ake type 6) in a packfile.

+    shallow <oid>
+       A client must notify the server of all objects for which it only
s/all objects/all commits/ for preciseness
+       has shallow copies of (meaning that it doesn't have the parents
+       of a commit) by supplying a 'shallow <oid>' line for each such
+       object so that the serve is aware of the limitations of the
+       client's history.
+
+    deepen <depth>
+       Request that the fetch/clone should be shallow having a commit depth of
+       <depth> relative to the remote side.
What does depth mean? number of commits, or number of edges?
Are there any special numbers (-1, 0, 1, max int) ?

From reading ahead: "Cannot be used with deepen-since, but
can be combined with deepen-relative" ?

+
+    deepen-relative
+       Requests that the semantics of the "deepen" command be changed
+       to indicate that the depth requested is relative to the clients
+       current shallow boundary, instead of relative to the remote
+       refs.
+
+    deepen-since <timestamp>
+       Requests that the shallow clone/fetch should be cut at a
+       specific time, instead of depth.  Internally it's equivalent of
+       doing "rev-list --max-age=<timestamp>". Cannot be used with
+       "deepen".
+
+    deepen-not <rev>
+       Requests that the shallow clone/fetch should be cut at a
+       specific revision specified by '<rev>', instead of a depth.
+       Internally it's equivalent of doing "rev-list --not <rev>".
+       Cannot be used with "deepen", but can be used with
+       "deepen-since".
What happens if those are given in combination?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help