CLI Reference
Reference for the current Dits CLI, with local, experimental, and roadmap commands distinguished explicitly.
clone works, and remote stores configuration. The push, pull, fetch, and sync commands return nonzero for local and network remotes without making changes. Every P2P operation and repository encryption are also disabled; see each row's status below.Global Options
The top-level dits parser accepts only help and version:
-h, --help Show help
-V, --version Show the Dits versionSubcommands 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.
Quick Reference Table
All commands at a glance. Use the category pages above for detailed documentation with examples and options.
| Command | Description | Category | Status |
|---|---|---|---|
| init | Initialize a new repository | Repository | stable |
| clone | Clone from a local filesystem path; network URLs fail nonzero | Repository | local only |
| remote | Store and inspect remote names and URLs; no data transfer | Repository | config only |
| status | Show working tree status | Repository | stable |
| add | Add files to staging area | Files | stable |
| restore | Restore working tree files | Files | stable |
| diff | Show changes between commits | Files | stable |
| commit | Record changes to the repository | History | stable |
| log | Show commit history | History | stable |
| show | Show various types of objects | History | stable |
| tag | Create, list, or delete tags | History | stable |
| branch | List, create, or delete branches | Branches | stable |
| switch | Switch to a branch | Branches | stable |
| checkout | Switch branches or restore files | Branches | stable |
| merge | Merge branches | Branches | stable |
| stash | Stash changes temporarily | Branches | stable |
| reset | Reset HEAD to a specific state | Branches | stable |
| rebase | Rebase commits | Advanced Git | stable |
| cherry-pick | Apply specific commits | Advanced Git | stable |
| bisect | Binary search for bugs | Advanced Git | stable |
| reflog | Show reference logs | Advanced Git | stable |
| blame | Show authorship by line | Advanced Git | stable |
| show | Show various types of objects | Advanced Git | stable |
| grep | Search repository content | Advanced Git | stable |
| worktree | Manage multiple worktrees | Advanced Git | stable |
| sparse-checkout | Check out only specified paths | Advanced Git | stable |
| hooks | Manage Git hooks | Advanced Git | stable |
| archive | Create archives | Advanced Git | stable |
| describe | Describe commits with tags | Advanced Git | stable |
| shortlog | Summarize git log output | Advanced Git | stable |
| maintenance | Run maintenance tasks | Advanced Git | stable |
| completions | Generate shell completions | Advanced Git | stable |
| push | Disabled; fails nonzero without transferring data or changing the repository | Remotes | disabled |
| pull | Disabled; fails nonzero without fetching, merging, or changing the repository | Remotes | disabled |
| fetch | Disabled; fails nonzero without downloading objects or updating refs | Remotes | disabled |
| sync | Disabled; fails nonzero without bidirectional synchronization | Remotes | disabled |
| lock | Lock files for exclusive editing | Locks | stable |
| unlock | Release file locks | Locks | stable |
| locks | List active locks | Locks | stable |
| mount | Experimental local FUSE mount; absent from default builds | VFS | feature gated |
| unmount | Experimental local FUSE unmount; absent from default builds | VFS | feature gated |
| cache-stats | Show VFS cache statistics | VFS | stable |
| p2p | Disabled; every operation fails before changing repository, directory, cache, socket, or mount state | P2P | disabled |
| inspect | Inspect MP4/MOV structure | Video | stable |
| inspect-file | Inspect file dedup stats | Video | stable |
| segment | Segment video into chunks | Video | stable |
| assemble | Reassemble segmented video | Video | stable |
| roundtrip | Test MP4 deconstruct/reconstruct | Video | stable |
| video-init | Initialize video timeline project | Video | stable |
| video-add-clip | Add clip to video timeline | Video | stable |
| video-show | Show a video timeline | Video | stable |
| video-list | List all video projects | Video | stable |
| proxy-generate | Generate proxy files for videos | Proxies | stable |
| proxy-status | Show proxy generation status | Proxies | stable |
| proxy-list | List all generated proxies | Proxies | stable |
| proxy-delete | Delete generated proxies | Proxies | stable |
| meta-scan | Scan and extract file metadata | Metadata | stable |
| meta-show | Show metadata for a file | Metadata | stable |
| meta-list | List all stored metadata | Metadata | stable |
| dep-check | Check project file dependencies | Dependencies | stable |
| dep-graph | Show dependency graph | Dependencies | stable |
| dep-list | List all project files | Dependencies | stable |
| freeze-init | Initialize lifecycle tracking | Storage | stable |
| freeze-status | Show storage tier status | Storage | stable |
| freeze | Move chunks to colder storage | Storage | stable |
| thaw | Restore chunks from cold storage | Storage | stable |
| freeze-policy | Set or view lifecycle policy | Storage | stable |
| encrypt-init | Disabled; fails nonzero without changing repository or keystore data | Encryption | disabled |
| encrypt-status | Report whether a legacy experimental keystore is present | Encryption | diagnostic |
| login | Disabled; fails nonzero without loading or caching a key | Encryption | disabled |
| logout | Clear a legacy experimental on-disk key cache | Encryption | legacy only |
| change-password | Disabled; fails nonzero without changing the keystore | Encryption | disabled |
| audit | Show audit log | Audit | stable |
| audit-stats | Show audit statistics | Audit | stable |
| audit-export | Export audit log to JSON | Audit | stable |
| gc | Read-only unreachable-object report; destructive deletion is disabled | Maintenance | diagnostic |
| fsck | Verify repository integrity | Maintenance | stable |
| repo-stats | Show repository statistics | Maintenance | stable |
| config | Get and set configuration | Maintenance | stable |
| telemetry enable | Enable telemetry data collection | Telemetry | stable |
| telemetry disable | Disable telemetry data collection | Telemetry | stable |
| telemetry status | Show current telemetry settings | Telemetry | stable |
Environment Variables
Commit identity is the only Dits-specific input currently read from the environment. General environment-based configuration overrides are not implemented.
| Value | Lookup order |
|---|---|
| Commit author name | DITS_AUTHOR_NAME → GIT_AUTHOR_NAME → USER → Unknown |
| Commit author email | DITS_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.
| Code | Meaning | Current meaning |
|---|---|---|
| 0 | Success | The requested local operation completed successfully |
| 1 | Command/runtime error | Includes fail-closed commands and integrity failures |
| 2 | Parser usage error | Invalid 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-projectDaily 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 logExperimental 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/projectWorking 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-statusdits help <command> or dits <command> --help to get detailed help for any command directly in your terminal.Related Topics
- Getting Started - Quick start guide
- Configuration - Configure Dits behavior
- Core Concepts - Understanding how Dits works