Integration of Git LFS and git-fat in Azure Repositories
What Git LFS Does
Git Large File Storage (Git LFS) is an extension to Git that solves a common problem: when a repository contains large binary files like images, videos, or compiled binaries, every clone and fetch downloads the full history of those files, making operations slow and storage expensive. Git LFS replaces large files in the repository with small text pointers, while the actual file contents live on a separate remote server. When you clone or fetch, Git LFS downloads only the pointers first, then lazily downloads the actual file content only when you need it. This approach reduces the repository size dramatically and speeds up common operations, though it adds a small step when you first access a large file.
What git-fat Does
git-fat is a similar tool that also moves large binary files out of the main Git history, but it works with existing Git workflows and integrates directly with Azure Blob Storage as its backend. Where Git LFS uses its own server infrastructure, git-fat leverages Azure's existing storage infrastructure, which teams already use for other cloud storage needs. The tool stores pointers in Git while keeping the actual files in Azure Blob, and it handles synchronization between the local repository and the cloud storage automatically. This makes git-fat attractive for teams already invested in Azure, because it reuses existing storage accounts and authentication mechanisms rather than requiring a separate LFS server.
Configuration and Integration
To use either tool in Azure Repos, the team must configure file tracking patterns that tell the tool which files to handle—typically patterns like *.psd, *.mp4, or *.zip that indicate binary assets. Authentication must be set up so the tool can push and pull files from the remote storage; for Git LFS this often means OAuth or SSH tokens, while git-fat uses Azure storage credentials. The backend storage connects to Azure Blob Storage, which provides durable, scalable capacity for binary assets. The relationship matters because the Git repository only holds pointers while the Blob service holds the actual content, so both systems must stay synchronized for the workflow to function correctly.
Validating the Results
After implementing either solution, the team should measure whether the changes actually help. Key metrics include the time required for clone and fetch operations—these should drop noticeably once large files are no longer part of the Git history. Storage costs also need tracking, because while Azure Blob storage has its own pricing, avoiding the growth of the Git repository itself reduces costs on the Git hosting side. The trade-off is that users must have network access to the Blob storage when they first need a large file, so the solution works best when that connectivity is reliable.