Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Frequently Asked Questions

How is MediaGit different from Git-LFS?

Git-LFS is an extension to Git that replaces large files with text pointers and stores the actual content on a separate LFS server. It requires a Git repository and a Git-LFS-compatible server.

MediaGit is a standalone version control system purpose-built for large media files. Key differences:

MediaGitGit-LFS
Git requiredNo — fully standaloneYes — wraps Git
ChunkingContent-aware chunking (FastCDC, StreamCDC)No chunking
Delta encodingYes — chunk-level deltasNo
DeduplicationCross-file chunk deduplicationNo deduplication
Parallel ingestionYes — multi-coreNo
Cloud backendsS3, Azure, GCS, MinIO, B2Server-specific
File size limitNo practical limitDepends on server

For a detailed comparison, see MediaGit vs Git-LFS.


What file sizes are supported?

MediaGit has no hard file size limit. In practice:

  • Files under 10 MB: stored as single objects with FastCDC chunking
  • Files 10–100 MB: split into 10–100 chunks with content-aware FastCDC
  • Files over 100 MB: split with StreamCDC into 100–2000 chunks
  • Files over 10 GB: supported; tested with 100 GB+ video files

Performance for large files benefits from the --jobs flag:

mediagit add --jobs 16 huge-video.mp4

Which cloud storage is best?

All supported backends (local, S3, Azure Blob, GCS) are functionally equivalent. Choose based on your infrastructure:

BackendBest for
Local filesystemDevelopment, single-machine use
Amazon S3AWS-hosted projects, widest ecosystem
MinIOSelf-hosted S3-compatible, on-premise
Azure BlobAzure-hosted projects
Google Cloud StorageGCP-hosted projects

For CI/CD environments, use the same region as your runners to minimize latency and transfer costs.


How does delta encoding work?

When you add a new version of a file that already exists in the repository, MediaGit computes a similarity score between the new file’s chunks and the stored chunks. If the chunks are sufficiently similar, it stores only the difference (delta) rather than a full copy.

Similarity thresholds vary by file type:

  • AI/PDF files: 15% similarity required
  • Office documents (docx, xlsx): 20% similarity required
  • General files: 80% similarity required

Delta chains are capped at depth 10 to prevent slow reads.


Does MediaGit work with Git?

No. MediaGit is an independent version control system, not a Git extension or plugin. It uses its own object database, ref format, and wire protocol. You cannot push a MediaGit repository to GitHub/GitLab.

Use MediaGit alongside Git: keep source code in Git, keep large media assets in MediaGit.


How do I migrate from Git-LFS?

The migration process:

  1. Export your Git-LFS files: git lfs pull
  2. Initialize a MediaGit repository: mediagit init
  3. Add the exported files: mediagit add --all
  4. Commit: mediagit commit -m "Initial import from Git-LFS"

For large repositories, use the parallel add flag to speed up ingestion:

mediagit add --jobs $(nproc) --all

How do I undo a commit?

MediaGit provides two commands for undoing commits:

Revert — creates a new commit that undoes a previous commit (preserves history):

mediagit revert <commit-hash>   # undo a specific commit

Reset — moves the current branch pointer backward (rewrites history):

mediagit reset --soft HEAD~1    # undo commit but keep changes staged
mediagit reset --mixed HEAD~1   # undo commit and unstage changes (default)
mediagit reset --hard HEAD~1    # undo commit and discard changes

For recovering specific files from an earlier commit, use mediagit show:

mediagit log --oneline          # find the target commit hash
mediagit show <hash>:<path>     # inspect a file from that commit

Can multiple people work on the same repository?

Yes. Push your changes to a shared remote:

mediagit push origin main

Others pull updates:

mediagit pull origin main

Concurrent writes to the same branch follow a push/pull model similar to Git.


What compression algorithm does MediaGit use?

Zstd (level 3 by default) for compressible formats, and Store (no compression) for already-compressed formats like JPEG, MP4, ZIP, PDF, and AI files. The algorithm is selected automatically per file type.

You can tune the global level in .mediagit/config.toml:

[compression]
algorithm = "zstd"
level = 3   # 1 (fast) to 22 (best)

How do I configure author information for commits?

Priority (highest to lowest):

  1. --author "Name <email>" CLI flag
  2. MEDIAGIT_AUTHOR_NAME / MEDIAGIT_AUTHOR_EMAIL environment variables
  3. [author] section in .mediagit/config.toml
  4. $USER environment variable (name only)
[author]
name = "Alice Smith"
email = "alice@example.com"

Is Windows ARM64 supported?

Windows ARM64 pre-built binaries are not included in official releases because the cross-compilation tool (cross-rs) does not support Windows targets. Windows ARM64 users must build from source. Alternatively, the x64 binary runs via Windows ARM64 emulation.


See Also