Maintaining deduplicated fork networks
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
*This page may contain information related to upcoming products, features and functionality.
It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes.
Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.*
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
GitLab is implementing [object deduplication for new public fork networks](https://gitlab.com/groups/gitlab-org/-/epics/189) but we need to provide housekeeping tools and make sure performance doesn't degrade over time.
### Vision
Forking is the workflow of choice for open source projects, and is used by many private organizations too, because of the flexibility and simplicity making it easy for anyone to contribute without needing to grant everyone write permissions to specific branches. Forking in GitLab should should be first class, feel as fast as creating a branch, and be efficient for instance administrators, so that GitLab can be the best place to host an open source project and private orgs can adopt forking workflows without penalty.
### Proposal
**Prerequistes:** https://gitlab.com/groups/gitlab-org/-/epics/189
House keeping has already been implemented with support for deduplication https://gitlab.com/gitlab-org/gitlab-ce/blob/0c4059efc146c869d3ffd1bc075c67c8b4ae921d/app/services/projects/git_deduplication_service.rb#L24
The primary remaining tasks surrounding managing deduplication across shards and admin interfaces.
### Links / references
- [GitHub Engineering: Counting Objects](https://githubengineering.com/counting-objects/)
- [Delta islands (Git 2.20.0)](https://github.com/git/git/commit/f3504ea3dd21b0a6d38bcd369efa0663cdc05416)
- [`objects/info/alternates`](https://git-scm.com/docs/gitrepository-layout#gitrepository-layout-objectsinfoalternates)
- [Junio: Bringing a bit more sanity to "alternates"?](https://git-blame.blogspot.com/2012/08/bringing-bit-more-sanity-to-alternates.html)
epic