about summary refs log tree commit diff
path: root/third_party/git/Documentation/technical/send-pack-pipeline.txt
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/Documentation/technical/send-pack-pipeline.txt
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/Documentation/technical/send-pack-pipeline.txt')
-rw-r--r--third_party/git/Documentation/technical/send-pack-pipeline.txt63
1 files changed, 0 insertions, 63 deletions
diff --git a/third_party/git/Documentation/technical/send-pack-pipeline.txt b/third_party/git/Documentation/technical/send-pack-pipeline.txt
deleted file mode 100644
index 9b5a0bc18667..000000000000
--- a/third_party/git/Documentation/technical/send-pack-pipeline.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Git-send-pack internals
-=======================
-
-Overall operation
------------------
-
-. Connects to the remote side and invokes git-receive-pack.
-
-. Learns what refs the remote has and what commit they point at.
-  Matches them to the refspecs we are pushing.
-
-. Checks if there are non-fast-forwards.  Unlike fetch-pack,
-  the repository send-pack runs in is supposed to be a superset
-  of the recipient in fast-forward cases, so there is no need
-  for want/have exchanges, and fast-forward check can be done
-  locally.  Tell the result to the other end.
-
-. Calls pack_objects() which generates a packfile and sends it
-  over to the other end.
-
-. If the remote side is new enough (v1.1.0 or later), wait for
-  the unpack and hook status from the other end.
-
-. Exit with appropriate error codes.
-
-
-Pack_objects pipeline
----------------------
-
-This function gets one file descriptor (`fd`) which is either a
-socket (over the network) or a pipe (local).  What's written to
-this fd goes to git-receive-pack to be unpacked.
-
-    send-pack ---> fd ---> receive-pack
-
-The function pack_objects creates a pipe and then forks.  The
-forked child execs pack-objects with --revs to receive revision
-parameters from its standard input. This process will write the
-packfile to the other end.
-
-    send-pack
-       |
-       pack_objects() ---> fd ---> receive-pack
-          | ^ (pipe)
-	  v |
-         (child)
-
-The child dup2's to arrange its standard output to go back to
-the other end, and read its standard input to come from the
-pipe.  After that it exec's pack-objects.  On the other hand,
-the parent process, before starting to feed the child pipeline,
-closes the reading side of the pipe and fd to receive-pack.
-
-    send-pack
-       |
-       pack_objects(parent)
-          |
-	  v [0]
-         pack-objects [0] ---> receive-pack
-
-
-[jc: the pipeline was much more complex and needed documentation before
- I understood an earlier bug, but now it is trivial and straightforward.]