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/projectCore Options
| Option | Description | Default |
|---|---|---|
| core.filemode | Track file permission changes | true |
| core.ignorecase | Ignore case in file names | false (true on macOS/Windows) |
| core.autocrlf | Line ending conversion | false |
| core.compression | Compression level (0-9) | 6 |
| core.bigFileThreshold | Size above which files use streaming | 512MB |
core.filemode
When true, Dits tracks file permission changes (executable bit). Disable on systems where permissions aren't meaningful.
$ dits config core.filemode falsecore.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 commitinput- 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 3Remote 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/developBranch 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 mainHooks Configuration
Configure which hooks are enabled:
[hooks]
pre-commit = true
pre-push = true
post-checkout = trueHook Scripts
.dits/hooks/. Create executable scripts named pre-commit, pre-push, etc.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 = 1280x720Cache Configuration
Control local caching behavior:
[cache]
# Maximum cache size
size = 50GB
# Cache directory (relative to .dits)
path = cache
# Enable chunk deduplication
deduplicate = trueExample 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 = 100GBEditing Configuration
# Edit in default editor
$ dits config --edit
# Edit specific file
$ dits config --local --edit