Skip to content

Server-side of fetch/pull #307

Open
Open
@Byron

Description

@Byron

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
    • daemon probaby 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)
  • 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-tracking-issueAn issue to track to track the progress of multiple PRs or issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions