Tracking Files
How to register files and directories for syncing.
Before dotweave can sync anything, you need to track it. Tracking tells dotweave “hey, I care about this file” by adding an entry to manifest.jsonc. Nothing gets copied or pushed until you explicitly run dotweave push afterward.
Tracking a File
Section titled “Tracking a File”Pass any file path to dotweave track:
dotweave track ~/.gitconfigdotweave track ~/.zshrcThis adds entries to manifest.jsonc — that’s it. Your files stay exactly where they are. To actually copy them into the sync directory, run dotweave push as a separate step.
Tracking a Directory
Section titled “Tracking a Directory”You can track an entire directory. Every file inside it (recursively) will be included when you push and pull.
dotweave track ~/.config/nvimdotweave track ~/.config/fishSetting a Sync Mode
Section titled “Setting a Sync Mode”By default, tracked entries use normal mode. You can change this with --mode:
dotweave track ~/.ssh/config --mode secretdotweave track ~/.local/share/cache-stuff --mode ignoreSee Sync Modes for a full breakdown of each mode.
Limiting to Specific Profiles
Section titled “Limiting to Specific Profiles”Use --profiles to assign an entry to one or more profiles. Only machines with a matching active profile will sync that entry.
dotweave track ~/.config/work-tool --profiles workdotweave track ~/.config/shared-tool --profiles work,personalEntries without --profiles land in the default profile and sync everywhere. See Profiles for details.
Customizing the Repository Path
Section titled “Customizing the Repository Path”By default, dotweave mirrors your file’s path relative to your home directory inside the sync directory. If you want a different path in the repository, use --repoPath:
dotweave track ~/Projects/scripts/deploy.sh --repoPath scripts/deploy.shUse Cases
Section titled “Use Cases”Whitelist approach — track only the specific files you want synced:
dotweave track ~/.gitconfigdotweave track ~/.zshrcdotweave track ~/.config/starship.tomldotweave pushBlacklist approach — track a whole directory, then ignore specific children:
dotweave track ~/.config/nvimdotweave track ~/.config/nvim/plugin/packer_compiled.lua --mode ignoredotweave pushUntracking
Section titled “Untracking”Changed your mind? Remove an entry with dotweave untrack:
dotweave untrack ~/.gitconfigThis removes the entry from manifest.jsonc. It does not delete the local file or any existing copy in the sync directory.
Checking What’s Tracked
Section titled “Checking What’s Tracked”Use dotweave status to see all tracked entries and their current state:
dotweave statusAdd --dry-run to push or pull to preview changes without applying them:
dotweave push --dry-rundotweave pull --dry-run