Open
Description
What would be needed to allow a server to send a pack?
Tasks
Server fetch/pull (server to client)
- git-odb
The below is a very early draft - it would be better to study existing implementations first to get a better overview on what (not) to do.
This one starts with the fun part to allow writing tests early and experiment with different diff algorithms and potentially their performance.
- generate a pack from objects received by an iterator producing (see issue)
- base objects only
- re-use existing delta objects
- A mechanism to declare some bases to be 'out of pack' for thin pack support
- Iterator to feed pack generation efficiently
- pack creation
- git-transport
Certainly needs more research, but roughly…
-
Server side
accept()
- http(s)
- ssh
-
daemonprobaby only used in testing, and we might implement it if it's useful for us as well
-
git-protocol
- Server side chatter to negotiate a pack for
- protocol V2
- protocol V1 (probably not worth it, let's see)
- Server side chatter to negotiate a pack for
-
gix-serve
Probably more like a toy at first merely for testing operation against various git clients.
- A server able to answer via
- http(s)
- file protocol (or remote invocation via SSH)
-
git://
Notes
- Could something like
gittorrent
be build using the plumbing of the server? Is it desirable even? Can there be some differentiation to allow custom transport layers easily?