Skip to main content
Documentation

Why Dits vs Git?

Git revolutionized text-based development, but it wasn't designed for large binary files. Dits brings version control to creative workflows where Git falls short.

The Problem Git Solves (and Doesn't)

Git was designed for software development—small text files that change incrementally. It works brilliantly for this use case because:

  • Text files compress well and have meaningful diffs
  • Changes are usually small relative to file size
  • Merge conflicts can be resolved with text editors
  • Files are typically small (KB, not GB)

But creative industries work with fundamentally different data:

  • Binary formats: Video, audio, images, 3D models
  • Huge files: 4K video files can be 10-500GB
  • Frequent full-file changes: Editing a video frame changes the entire file
  • No meaningful diffs: You can't "merge" two video edits

Git LFS: The Band-Aid Solution

Git LFS (Large File Storage) was created to address this gap, but it's fundamentally limited:

Git LFS Problems
No deduplication: Same content stored multiple times
Full file transfers: Tiny changes = full re-upload
Complex setup: Requires server infrastructure
Lock-in: Proprietary protocol, vendor dependencies
Dits Solutions
Content-defined chunking: Automatic deduplication
Delta transfers: Only changed chunks uploaded
Self-contained: Works offline, no server required
Open protocol: Self-hostable, interoperable

Dits Hybrid Approach: Best of Both Worlds

Dits doesn't replace Git—it complements it. Use both tools together for optimal workflows:

Hybrid Git + Dits Workflow

Git Handles:

  • Source code (.rs, .js, .py, .cpp)
  • Configuration files (.json, .yaml)
  • Documentation (.md, .txt)
  • Small assets (icons, fonts)
  • Build scripts and pipelines

Benefits: Line-based diffs, 3-way merge, blame, code review

Dits Handles:

  • Video files (.mp4, .mov, .avi)
  • 3D models (.obj, .fbx, .gltf)
  • Game assets (Unity, Unreal, Godot)
  • Large images (.psd, .raw)
  • Audio files and middleware

Benefits: FastCDC chunking, automatic deduplication, delta transfers

When to Use Each Tool

Use Git For:

Source Code

Text files, scripts, configuration files, documentation

Small Assets

Icons, small images, fonts, design system tokens

Documentation

Markdown, READMEs, wikis, changelogs

Use Dits For:

Video Files

MP4, MOV, AVI, ProRes, DNxHD, any video format

Audio Files

WAV, AIFF, MP3, FLAC, professional audio formats

RAW Photos

CR2, NEF, ARW, DNG, high-resolution photo formats

Game Assets

Textures, models, animations, build artifacts

3D Models

OBJ, FBX, BLEND, Maya scenes, complex geometries

Design Files

PSD, AI, XD, Figma files, layered compositions

Performance Comparison

Real-world performance differences for a 10GB video file:

OperationGit LFSDitsImprovement
Initial commit10GB upload10GB upload-
Small edit (1MB change)10GB upload~200KB upload50,000x faster
Clone repository10GB downloadOn-demand accessLazy loading
Storage efficiency10GB per version10GB + manifestDeduplication

Can They Work Together?

Absolutely! Many teams use both tools in harmony:

my-project/
├── .git/                    # Git repository
│   ├── code/
│   ├── docs/
│   └── scripts/
│
├── .dits/                   # Dits repository
│   ├── assets/
│   ├── footage/
│   └── renders/
│
└── shared/                  # Both Git and Dits
    ├── config files
    └── project metadata

This hybrid approach gives you:

  • Git: Fast, reliable version control for code and text
  • Dits: Efficient version control for large creative assets
  • Single workflow: One repository structure, familiar commands
  • Best of both: Text diffs + binary deduplication

Migration Strategies

From Git LFS

  1. Install Dits alongside your existing Git setup
  2. Move large files from LFS to Dits tracking
  3. Keep using Git for code, use Dits for binaries
  4. Gradually migrate workflows as confidence grows

From Manual Versioning

  1. Start with a single project directory
  2. Use dits init to create the repository
  3. Add your existing files with dits add .
  4. Commit with dits commit -m "Initial import"
  5. Delete those "final_v27.mp4" files forever

Next Steps

Ready to try Dits? Start with our Getting Started guide or learn more about how Dits works.