GITBENCH

Real-time latency benchmarks for git hosting providers.
Measured from Vercel Sandbox (us-east-1) across 7 providers, 3 repo sizes, 7 operations.

CodeStorage
GitHub
GitLab
Codeberg
CF Artifacts
CodeCommit
CC us-west-1
Repo size:

Clone

Full Clone
git clone (full history) — P50 on medium repos (ms)
Shallow Clone
git clone --depth 1 — P50 on medium repos (ms)

Push

Push
Push 1 probe commit — P50 on medium repos (ms)
Revert
Force-push HEAD~1 to restore — P50 on medium repos (ms)

Fetch

ls-remote
git ls-remote (ref advertisement) — P50 on medium repos (ms)
Fetch (noop)
git fetch when up-to-date — P50 on medium repos (ms)
Fetch (delta)
git fetch after 1 new commit — P50 on medium repos (ms)

Detailed Results

Full Clone
Medium repo
git clone (full history) — ranked by P50 latency
#ProvidernP50P95AvgStdDevMinMax
1
CodeStorage
20637ms901ms711ms±222ms519ms1,492ms
2
GitHub
20642ms857ms680ms±95ms566ms885ms
3
GitLab
20889ms1,140ms926ms±123ms751ms1,204ms
4
CF Artifacts
20956ms1,151ms996ms±116ms802ms1,207ms
5
Codeberg
201,021ms1,155ms1,045ms±98ms921ms1,302ms
6
CodeCommit
202,996ms3,104ms2,987ms±87ms2,810ms3,129ms
7
CC us-west-1
203,190ms3,647ms3,249ms±196ms3,091ms3,854ms

Size Scaling

How latency scales from small (2 files) to large (10K files)

Full Clone
P50 by repo size
Push
P50 by repo size
Fetch (noop)
P50 by repo size
Fetch (delta)
P50 by repo size
Methodology

All benchmarks are run from a Vercel Sandbox in us-east-1. Each operation is timed end-to-end including network, TLS, and git protocol negotiation over authenticated HTTPS.

Test Repos

SmallREADME only · 2 files
Mediumcreate-next-app · 9 files
LargeSynthetic monorepo · 10,062 files

Operations Tested

Clone— Full clone and shallow clone (--depth 1) of each repo. All providers tested in parallel per round.
Push + Revert— Clone the repo, add a probe commit, push it, then force-push HEAD~1 to restore the original state. Both the push and the revert are timed separately.
Fetch— Three variants: ls-remote (ref advertisement), fetch when already up-to-date (noop), and fetch after a new commit was pushed (delta). The delta test pushes a probe commit, fetches from a separate clone, then reverts.

Clone and fetch benchmarks: 20 rounds. Push benchmarks: 15 rounds. Providers that return HTTP 429 are automatically disabled for remaining rounds (applies to Codeberg during clone benchmarks). Sandboxes that crash are automatically replaced and benchmarking resumes from the next round.