#+TITLE: Dotfile Dotfile is a version control system designed for [[https://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory][dotfiles]]. It aliases file paths to short names and provides an interface to manage file state. Use a remote server like [[https://dotfilehub.com][dotfilehub.com]] to push, pull, or find new files.
Dotfile is a self contained system designed from the ground up to make managing single files as simple as possible. Files are stored in their normal locations on disk without any symbolic links. Dotfile doesn't care if tracked files are moved or edited with external tools.
Advantages over git based systems:
Things Dotfile doesn't do:
Optionally [[docs/web.org#self-host][self host]] a Dotfilehub instance.
Check a file in: #+BEGIN_SRC bash dotfile init ~/.bashrc #+END_SRC
This creates an initial commit. Dotfile will store the path of the file and give it a default alias of =bashrc=. Use the alias to refer to it at anytime.
Open =~/.bashrc= in =$EDITOR=: #+BEGIN_SRC bash dotfile edit bashrc #+END_SRC
Check the diff after making changes: #+BEGIN_SRC bash dotfile diff bashrc #+END_SRC
Commit new changes: #+BEGIN_SRC bash dotfile commit bashrc "Add dotfile alias" #+END_SRC
View commit history: #+BEGIN_SRC bash dotfile log bashrc #+END_SRC
Revert its uncommitted changes: #+BEGIN_SRC bash dotfile checkout -f bashrc #+END_SRC
Push to a remote server: #+BEGIN_SRC bash dotfile push bashrc #+END_SRC
Install all of your dotfiles: #+BEGIN_SRC bash dotfile pull --all #+END_SRC