|
1 | | -# sfptc README |
| 1 | +# Super-fast Pass-through Cache (SFPTC) |
2 | 2 |
|
3 | | -Congrats, project leads! You got a new project to grow! |
| 3 | +SFPTC is a server and tooling for incredibly efficient, protocol-aware caching. It is |
| 4 | +designed to be used at scale, with minimal impact on upstream systems. By "protocol-aware", we mean that the proxy isn't |
| 5 | +just a naive HTTP proxy, it is aware of the higher level protocol being proxied (Git, Docker, etc.) and can make more efficient decisions. |
4 | 6 |
|
5 | | -This stub is meant to help you form a strong community around your work. It's yours to adapt, and may |
6 | | -diverge from this initial structure. Just keep the files seeded in this repo, and the rest is yours to evolve! |
| 7 | +## Git |
7 | 8 |
|
8 | | -## Introduction |
| 9 | +Git causes a number of problems for us, but the most obvious are: |
9 | 10 |
|
10 | | -Orient users to the project here. This is a good place to start with an assumption |
11 | | -that the user knows very little - so start with the Big Picture and show how this |
12 | | -project fits into it. |
| 11 | +1. Rate limiting by service providers. |
| 12 | +2. `git clone` is very slow, even discounting network overhead |
13 | 13 |
|
14 | | -Then maybe a dive into what this project does. |
| 14 | +To solve this we apply two different strategies on the server: |
15 | 15 |
|
16 | | -Diagrams and other visuals are helpful here. Perhaps code snippets showing usage. |
| 16 | +1. Periodic full `.tar.zst` snapshots of the repository. These snapshots restore 4-5x faster than `git clone`. |
| 17 | +2. Passthrough caching of the packs returned by `POST /repo.git/git-upload-pack` to support incremental pulls. |
17 | 18 |
|
18 | | -Project leads should complete, alongside this `README`: |
19 | | -* [CODEOWNERS](./CODEOWNERS) - set project lead(s) |
20 | | -* [CONTRIBUTING.md](./CONTRIBUTING.md) - Fill out how to: install prereqs, build, test, run, access CI, chat, discuss, file issues |
21 | | -* [Bug-report.md](.github/ISSUE_TEMPLATE/bug-report.md) - Fill out `Assignees` add codeowners @names |
22 | | -* [config.yml](.github/ISSUE_TEMPLATE/config.yml) - remove "(/add your discord channel..)" and replace the url with your Discord channel if applicable |
| 19 | +On the client we redirect git to the proxy: |
23 | 20 |
|
24 | | -The other files in this template repo may be used as-is: |
25 | | -* [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) |
26 | | -* [GOVERNANCE.md](./GOVERNANCE.md) |
27 | | -* [LICENSE](./LICENSE) |
| 21 | +```ini |
| 22 | +[url "https://sfptc.local/github/"] |
| 23 | + insteadOf = https://github.com/ |
| 24 | +``` |
28 | 25 |
|
29 | | -## Project Resources |
| 26 | +As Git itself isn't aware of the snapshots, Git-specific code in the SFPTC CLI can be used to reconstruct a repository. |
30 | 27 |
|
31 | | -| Resource | Description | |
32 | | -| ------------------------------------------ | ------------------------------------------------------------------------------ | |
33 | | -| [CODEOWNERS](./CODEOWNERS) | Outlines the project lead(s) | |
34 | | -| [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) | Expected behavior for project contributors, promoting a welcoming environment | |
35 | | -| [CONTRIBUTING.md](./CONTRIBUTING.md) | Developer guide to build, test, run, access CI, chat, discuss, file issues | |
36 | | -| [GOVERNANCE.md](./GOVERNANCE.md) | Project governance | |
37 | | -| [LICENSE](./LICENSE) | Apache License, Version 2.0 | |
| 28 | +## Docker |
| 29 | + |
| 30 | +## Hermit |
| 31 | + |
| 32 | +Hermit |
0 commit comments