Skip to main content
Documentation

Repository Configuration

Repository-level configuration applies only to the current repository and is stored in .dits/config.

Configuration File Location

Repository configuration is stored at .dits/config in your repository root. It overrides global and system configuration.

my-project/
├── .dits/
│   ├── config          ← Repository configuration
│   ├── HEAD
│   └── ...
└── ...

Setting Repository Options

# Set a repository-specific value
$ dits config user.email "project-specific@example.com"

# View repository config
$ dits config --list --local
user.email=project-specific@example.com
core.compression=9
remote.origin.url=https://example.com/project

Core Options

OptionDescriptionDefault
core.filemodeTrack file permission changestrue
core.ignorecaseIgnore case in file namesfalse (true on macOS/Windows)
core.autocrlfLine ending conversionfalse
core.compressionCompression level (0-9)6
core.bigFileThresholdSize above which files use streaming512MB

core.filemode

When true, Dits tracks file permission changes (executable bit). Disable on systems where permissions aren't meaningful.

$ dits config core.filemode false

core.ignorecase

Enable case-insensitive file matching. Automatically enabled on case-insensitive file systems.

core.autocrlf

Control automatic line ending conversion:

  • false - No conversion (recommended for binary-heavy repos)
  • true - Convert to CRLF on checkout, LF on commit
  • input - Convert to LF on commit only

core.compression

Set compression level for stored chunks (0-9):

  • 0 - No compression (fastest)
  • 6 - Balanced (default)
  • 9 - Maximum compression (slowest)
# For already-compressed video files, lower compression
$ dits config core.compression 3

Remote Configuration

Remote repositories are configured under [remote "name"] sections:

# .dits/config
[remote "origin"]
    url = https://example.com/team/project
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = ssh://git@example.com/team/project

[remote "backup"]
    url = https://backup.example.com/project
    fetch = +refs/heads/*:refs/remotes/backup/*

Remote Options

# Set fetch URL
$ dits config remote.origin.url https://example.com/project

# Set separate push URL
$ dits config remote.origin.pushurl ssh://git@example.com/project

# Add multiple fetch refspecs
$ dits config --add remote.origin.fetch +refs/tags/*:refs/tags/*

Branch Configuration

Configure tracking relationships and merge behavior per branch:

# .dits/config
[branch "main"]
    remote = origin
    merge = refs/heads/main
    rebase = true

[branch "develop"]
    remote = origin
    merge = refs/heads/develop

Branch Options

# Set upstream branch
$ dits config branch.main.remote origin
$ dits config branch.main.merge refs/heads/main

# Enable rebase on pull for this branch
$ dits config branch.main.rebase true

# Or set via push
$ dits push -u origin main

Hooks Configuration

Configure which hooks are enabled:

[hooks]
    pre-commit = true
    pre-push = true
    post-checkout = true

Media-Specific Configuration

Configure video and large file handling:

[media]
    # Video file extensions for special handling
    videoExtensions = mp4,mov,mxf,avi,mkv,prores

    # Enable keyframe-aligned chunking
    keyframeAligned = true

    # Generate proxy files on add
    generateProxies = false

    # Proxy resolution
    proxyResolution = 1280x720

Cache Configuration

Control local caching behavior:

[cache]
    # Maximum cache size
    size = 50GB

    # Cache directory (relative to .dits)
    path = cache

    # Enable chunk deduplication
    deduplicate = true

Example Full Configuration

# .dits/config
[core]
    repositoryformatversion = 0
    filemode = true
    compression = 6
    bigFileThreshold = 512MB

[user]
    name = Project Bot
    email = bot@example.com

[remote "origin"]
    url = https://example.com/team/project
    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "main"]
    remote = origin
    merge = refs/heads/main

[media]
    keyframeAligned = true
    videoExtensions = mp4,mov,mxf

[cache]
    size = 100GB

Editing Configuration

# Edit in default editor
$ dits config --edit

# Edit specific file
$ dits config --local --edit

Related Topics