Skip to content

Implement Git strategy #23

@alecthomas

Description

@alecthomas

This is a high level description with a lot of detail left unanswered, but generally Git caching will consist of two complementary approaches:

  1. Periodic bare snapshots stored as tarballs in the cache.
  2. Git protocol aware proxy that can a) serve bundles using Git's bundle-uri header and b) serve packs directly from the local mirror.

The snapshots will be usable by a CLI tool separate from git, to allow the fastest possible unpacking, but will also be used by the proxy itself to keep a local bare mirror up to date for serving Git requests directly.

The Git protocol part of the solution will be used for those cases where either the cache CLI tool isn't used, or when doing incremental pulls. In this path, the upstream Git repository will be hit at most twice: at least once to find any missing local refs, then a possible second request to pull missing refs.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions