Working with Large Files
Dits is designed for large files. Learn best practices for video, images, 3D models, and other binary assets to maximize storage efficiency and performance.
No Special Configuration Needed
Unlike Git LFS, Dits handles large files natively. Just add and commit files normally - Dits automatically chunks and deduplicates them.
File Types
Video
.mov, .mp4, .avi, .mxf, .r3d
- GOP-aligned chunking
- Frame-level dedup
- Streaming playback
Images
.psd, .tiff, .raw, .exr, .dpx
- Layer-aware chunking
- Proxy generation
- Metadata preservation
3D/Game
.fbx, .uasset, .blend, .unity
- Binary-aware chunking
- Mesh deduplication
- Texture reuse
Chunking Configuration
Dits automatically selects optimal chunk sizes, but you can tune for your specific content:
# dits.toml - per-repository settings
[chunking]
# Default settings for most files
algorithm = "fastcdc"
min_size = "16KB"
avg_size = "64KB"
max_size = "256KB"
# Override for specific file types
[chunking.video]
patterns = ["*.mov", "*.mp4", "*.mxf"]
min_size = "256KB"
avg_size = "1MB"
max_size = "4MB"
[chunking.images]
patterns = ["*.psd", "*.tiff", "*.exr"]
min_size = "64KB"
avg_size = "256KB"
max_size = "1MB"Workflow: Video Production
# Initial setup
$ dits init
$ dits add footage/*.mov
$ dits commit -m "Add raw footage"
# Dits shows efficient storage
$ dits status
Repository size: 45.2 GB
Unique chunks: 234,567
Deduplication ratio: 23.4%
# Generate proxies for editing
$ dits proxy create footage/*.mov --profile preview
Creating proxies...
footage/scene01.mov -> proxies/scene01_preview.mov (1080p, H.264)
footage/scene02.mov -> proxies/scene02_preview.mov
Done. Saved 42.1 GB in proxy storage.
# Commit proxies
$ dits add proxies/
$ dits commit -m "Add preview proxies"
# Team member clones (fast!)
$ dits clone --filter blob:none https://server/project
# Only metadata downloaded - instant
# Mount for instant access
$ dits mount /mnt/project
# All files appear, stream on demandWorkflow: Game Development
# Track only source assets, ignore builds
$ cat .ditsignore
Build/
Library/
Temp/
*.exe
# Add source assets
$ dits add Assets/
$ dits commit -m "Add game assets"
# Check texture reuse
$ dits dedup-stats Assets/Textures/
Analyzed 456 textures:
Total size: 12.3 GB
Unique data: 8.7 GB (29.3% savings)
Shared chunks: 1,234
Identical files: 12
# Find duplicate textures
$ dits find-duplicates Assets/
Exact duplicates:
grass_01.png = grass_old.png (23 MB)
rock_normal.png = stone_normal.png (45 MB)
Similar textures (>90% match):
wood_01.png ~ wood_02.png (87% similar)Sparse Checkout
Work with just the files you need:
# Clone metadata only
$ dits clone --filter blob:none https://server/huge-project
Cloning into 'huge-project'...
Receiving metadata... done.
Repository size: 2.3 TB (available on demand)
# Enable sparse checkout
$ cd huge-project
$ dits sparse-checkout init --cone
# Choose what to download
$ dits sparse-checkout set \
scripts/ \
assets/textures/characters/ \
assets/models/characters/
# Check what's downloaded
$ dits sparse-checkout list
scripts/
assets/textures/characters/
assets/models/characters/
# Rest of files are placeholders
$ ls assets/environments/
# Shows files but they're not downloaded yet
# Access downloads on demand
$ cat assets/environments/level1/readme.txt
# File content streams automaticallyVFS Mount
The most seamless way to work with large repos:
# Mount repository as virtual drive
$ dits mount /mnt/project
# Files appear instantly
$ ls /mnt/project
assets/ footage/ project.prproj README.md
# Open in your NLE - files stream on demand
$ open /mnt/project/project.prproj
# Check what's cached locally
$ dits cache-stats
Cache: 12.5 GB / 50 GB
Hot files: project.prproj, footage/scene01.mov
Hit rate: 94.2%
# Prefetch for offline work
$ dits prefetch footage/scene01.mov footage/scene02.mov
Prefetching 2 files (4.5 GB)...
Done.Storage Optimization
Local Storage
# Clean up unused chunks
dits gc
# Aggressive cleanup
dits gc --aggressive
# Show what would be removed
dits gc --dry-runRemote Storage
# Move cold data to archive tier
dits storage tier \
--path footage/2022/ \
--tier archive
# Check storage distribution
dits storage statsBest Practices
Do's
- Use proxies for daily editing, full-res for final delivery
- Organize assets by project/version for better chunking
- Use sparse checkout for partial access to huge repos
- Mount with VFS for streaming access
- Run
dits gcperiodically to clean up
Don'ts
- Don't store generated/rendered files (add to .ditsignore)
- Don't commit the same file with different names
- Don't recompress videos before committing
- Don't forget to push proxies for team access
Related Topics
- Video Features - Video-specific features
- Proxy Files - Low-res previews
- VFS Commands - Virtual filesystem
- Storage Tiers - Hot/cold storage