Skip to main content
Documentation
CLI Reference

CLI Reference

Reference for the current Dits CLI, with local, experimental, and roadmap commands distinguished explicitly.

Global Options

The top-level dits parser accepts only help and version:

-h, --help       Show help
-V, --version    Show the Dits version

Subcommands define their own flags. --verbose, --quiet, --no-color, --json, -C, and command-scoped config overrides are not global options.

Command Categories

Commands are organized into logical categories. Click on a category to see detailed documentation for each command.

Repository Management
Initialize, clone, and manage repositories
initcloneremotestatusconfig
Advanced Git Operations
Rebase, cherry-pick, bisect, reflog, and more
rebasecherry-pickbisectreflogblame+10 more
File Operations
Stage, restore, and diff files
addrestorediff
Branching & Merging
Manage branches, merge, and navigate history
branchswitchcheckoutmergestash+2 more
History & Inspection
View commits, logs, and file history
logshowcommitdiff
Remote Operations
Configure remotes; repository transfer is disabled
pushpullfetchsync
File Locking
Lock files for exclusive editing in teams
lockunlocklocks
Virtual Filesystem
Feature-gated experimental local mounts
mountunmountcache-stats
Peer-to-peer
Disabled design scaffolding; all operations fail closed
p2p
Video & Media
Video-specific operations and timelines
inspectsegmentassembleroundtripvideo-init+3 more
Proxy Files
Generate and manage lightweight proxy files
proxy-generateproxy-statusproxy-listproxy-delete
Metadata
Extract and query file metadata
meta-scanmeta-showmeta-list
Dependencies
Track project file dependencies
dep-checkdep-graphdep-list
Storage Tiers
Manage hot, warm, and cold storage
freeze-initfreeze-statusfreezethawfreeze-policy
Encryption
Inspect or clear legacy encryption state
encrypt-initencrypt-statusloginlogoutchange-password
Audit Logging
Track and export repository activity
auditaudit-statsaudit-export
Maintenance
Read-only GC reporting, integrity checks, and stats
gcfsckrepo-statsinspect-fileconfig
Telemetry
Manage opt-in CLI telemetry
telemetry enabletelemetry disabletelemetry status

Quick Reference Table

All commands at a glance. Use the category pages above for detailed documentation with examples and options.

CommandDescriptionCategoryStatus
initInitialize a new repositoryRepositorystable
cloneClone from a local filesystem path; network URLs fail nonzeroRepositorylocal only
remoteStore and inspect remote names and URLs; no data transferRepositoryconfig only
statusShow working tree statusRepositorystable
addAdd files to staging areaFilesstable
restoreRestore working tree filesFilesstable
diffShow changes between commitsFilesstable
commitRecord changes to the repositoryHistorystable
logShow commit historyHistorystable
showShow various types of objectsHistorystable
tagCreate, list, or delete tagsHistorystable
branchList, create, or delete branchesBranchesstable
switchSwitch to a branchBranchesstable
checkoutSwitch branches or restore filesBranchesstable
mergeMerge branchesBranchesstable
stashStash changes temporarilyBranchesstable
resetReset HEAD to a specific stateBranchesstable
rebaseRebase commitsAdvanced Gitstable
cherry-pickApply specific commitsAdvanced Gitstable
bisectBinary search for bugsAdvanced Gitstable
reflogShow reference logsAdvanced Gitstable
blameShow authorship by lineAdvanced Gitstable
showShow various types of objectsAdvanced Gitstable
grepSearch repository contentAdvanced Gitstable
worktreeManage multiple worktreesAdvanced Gitstable
sparse-checkoutCheck out only specified pathsAdvanced Gitstable
hooksManage Git hooksAdvanced Gitstable
archiveCreate archivesAdvanced Gitstable
describeDescribe commits with tagsAdvanced Gitstable
shortlogSummarize git log outputAdvanced Gitstable
maintenanceRun maintenance tasksAdvanced Gitstable
completionsGenerate shell completionsAdvanced Gitstable
pushDisabled; fails nonzero without transferring data or changing the repositoryRemotesdisabled
pullDisabled; fails nonzero without fetching, merging, or changing the repositoryRemotesdisabled
fetchDisabled; fails nonzero without downloading objects or updating refsRemotesdisabled
syncDisabled; fails nonzero without bidirectional synchronizationRemotesdisabled
lockLock files for exclusive editingLocksstable
unlockRelease file locksLocksstable
locksList active locksLocksstable
mountExperimental local FUSE mount; absent from default buildsVFSfeature gated
unmountExperimental local FUSE unmount; absent from default buildsVFSfeature gated
cache-statsShow VFS cache statisticsVFSstable
p2pDisabled; every operation fails before changing repository, directory, cache, socket, or mount stateP2Pdisabled
inspectInspect MP4/MOV structureVideostable
inspect-fileInspect file dedup statsVideostable
segmentSegment video into chunksVideostable
assembleReassemble segmented videoVideostable
roundtripTest MP4 deconstruct/reconstructVideostable
video-initInitialize video timeline projectVideostable
video-add-clipAdd clip to video timelineVideostable
video-showShow a video timelineVideostable
video-listList all video projectsVideostable
proxy-generateGenerate proxy files for videosProxiesstable
proxy-statusShow proxy generation statusProxiesstable
proxy-listList all generated proxiesProxiesstable
proxy-deleteDelete generated proxiesProxiesstable
meta-scanScan and extract file metadataMetadatastable
meta-showShow metadata for a fileMetadatastable
meta-listList all stored metadataMetadatastable
dep-checkCheck project file dependenciesDependenciesstable
dep-graphShow dependency graphDependenciesstable
dep-listList all project filesDependenciesstable
freeze-initInitialize lifecycle trackingStoragestable
freeze-statusShow storage tier statusStoragestable
freezeMove chunks to colder storageStoragestable
thawRestore chunks from cold storageStoragestable
freeze-policySet or view lifecycle policyStoragestable
encrypt-initDisabled; fails nonzero without changing repository or keystore dataEncryptiondisabled
encrypt-statusReport whether a legacy experimental keystore is presentEncryptiondiagnostic
loginDisabled; fails nonzero without loading or caching a keyEncryptiondisabled
logoutClear a legacy experimental on-disk key cacheEncryptionlegacy only
change-passwordDisabled; fails nonzero without changing the keystoreEncryptiondisabled
auditShow audit logAuditstable
audit-statsShow audit statisticsAuditstable
audit-exportExport audit log to JSONAuditstable
gcRead-only unreachable-object report; destructive deletion is disabledMaintenancediagnostic
fsckVerify repository integrityMaintenancestable
repo-statsShow repository statisticsMaintenancestable
configGet and set configurationMaintenancestable
telemetry enableEnable telemetry data collectionTelemetrystable
telemetry disableDisable telemetry data collectionTelemetrystable
telemetry statusShow current telemetry settingsTelemetrystable

Environment Variables

Commit identity is the only Dits-specific input currently read from the environment. General environment-based configuration overrides are not implemented.

ValueLookup order
Commit author nameDITS_AUTHOR_NAME → GIT_AUTHOR_NAME → USER → Unknown
Commit author emailDITS_AUTHOR_EMAIL → GIT_AUTHOR_EMAIL → <name>@localhost

Hook subprocesses receive DITS_DIR and DITS_HOOK as context. Setting DITS_DIR before running the CLI does not redirect repository discovery. See the environment reference for unsupported names that appeared in older drafts.

Exit Codes

The current CLI distinguishes success, runtime failure, and parser usage failure. It does not implement the detailed authentication, network, repository, lock, or merge-conflict code taxonomy shown in older drafts.

CodeMeaningCurrent meaning
0SuccessThe requested local operation completed successfully
1Command/runtime errorIncludes fail-closed commands and integrity failures
2Parser usage errorInvalid command, argument, or option

Common Workflows

Initial Setup

# Set the identity currently consumed by commits
export DITS_AUTHOR_NAME="Your Name"
export DITS_AUTHOR_EMAIL="you@example.com"

# Clone an existing local repository
dits clone /path/to/existing-repository project
cd project

# Or initialize a new one
dits init my-new-project
cd my-new-project

Daily Workflow

# Check what's changed
dits status

# Work on your files...

# Stage and commit changes
dits add footage/scene01.mov
dits commit -m "Color grade scene 1"

# Inspect local history
dits log

Experimental local FUSE build

Mount and unmount are absent from default binaries. Source builds can enable the experimental local fuser feature on a machine with the required OS FUSE support. This is not remote or on-demand hydration.

cargo build --locked --release -p dits --features fuser
./target/release/dits mount /mnt/project
./target/release/dits unmount /mnt/project

Working with Video

# Inspect video structure
dits inspect footage/hero.mov

# Check deduplication stats
dits inspect-file footage/hero.mov

# Generate proxy files for offline editing
dits proxy-generate --resolution 1080p footage/

# Check proxy status
dits proxy-status

Related Topics