fshy

Home / Microsoft

Azure DevOps Repos (Git as bulk blob store)

azure.microsoft.com/en-us/pricing/details/devops/azure-devopPaaSstorage/azure-devops-reposJSONcomparereport an errorprovider JSON

Free allowance
Unlimited private Git repositories free per organization; each repository may be up to 250 GB; storage is NOT a billed meter - the Azure DevOps free tier bills only users, parallel jobs and Artifacts storage.
Verdict
★ qualifiesusable as stated; the read path was probed
Cost
free tier
Identity
anonymousno card, no phone
Binding limit
noneno named constraint binds
Evidence
reported6 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
Free tierUnlimited private Git repositories free per organization; each repository may be up to 250 GB; storage is NOT a billed meter - the Azure DevOps free tier bills only users, parallel jobs and Artifacts storage. Git LFS is free and does not count toward the 5 GB push limit.
unit GB; metered on stored-bytes
Pricenone stated
Identityanonymous not published
EgressUnmetered. Clone/fetch over HTTPS from dev.azure.com has no egress meter - the billing FAQ enumerates every chargeable meter (extra Basic users, Basic+Test Plans, parallel jobs, Artifacts >2 GB, GHAS) and data transfer is not among them.
Per-object capnot stated
Retentionnot stated
Interfacerest, git, rclone part of the text of Free tier, above
ToolingPlain git / git-lfs; Azure DevOps REST API for repository + item download (GET /_apis/git/repositories/{repo}/items?path=); rclone has no ADO Repos backend, so use git or the REST item API
Composes withUnlimited repos x 250 GB each within one org; each org holds up to 1,000 projects; orgs are free and you may hold many. 250 GB x N repos x M orgs. The 2026 sprint-273 change removed the Git object-count limit, which was the per-repo ceiling that used to bite before 250 GB. Files are content-addressed and deduplicated across history, so a repo of distinct chunks stores each chunk once.
ReliabilityReliable but slow as bulk storage: no random-access read, no partial download, whole-repo clone semantics; the 'temporarily unavailable while repository is updated' pack-optimization window can block writes for large repos.
Evidence 6
datesourcewhat it proved
2026-10-21learn.microsoft.com/en-us/azure/devops/repos/git/limits'Repositories should be no larger than 250 GB'; 'pushes are limited to 5 GB at a time'; 'Git LFS doesn't count towards the 5-GB repository limit'
2026-10-21learn.microsoft.com/en-us/azure/devops/repos/git/manage-larg'Azure DevOps Services fully supports Git LFS and offers it for free'
2026-10-21azure.microsoft.com/en-us/pricing/details/devops/azure-devop'Azure Repos: Unlimited private Git repos'; 'Azure Artifacts: 2 GiB free per organization'
2026-10-21learn.microsoft.com/en-us/azure/devops/release-notes/2026/sp'Git object count limit removed ... enables unrestricted repository growth'
2026-10-21dev.azure.com/powershell/powershell/_apis/git/repositories?aprobe: curl -> HTTP 200, returned repo objects with size fields (PowerShell repo size 90822000 bytes at time of probe)
2026-10-21dev.azure.com/powershell/powershell/_git/powershellprobe: git ls-remote -> 200, returned HEAD 2f027ba4356e363f65e2cc71c7bd49c5d1556b32 (anonymous read works, dies in 2027)
Unknown values 6
  • $.binding_note boilerplate
  • $.identity_cost.detail boilerplate
  • $.per_object_cap.notes the field may be stated in a source that was not read
  • $.per_object_cap.stated the field may be stated in a source that was not read
  • $.retention.notes the field may be stated in a source that was not read
  • $.retention.stated the field may be stated in a source that was not read