dotfile
dotfile copied to clipboard
Simple version control made for tracking single files
#+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.
- Why Dotfile? Most [[https://wiki.archlinux.org/index.php/Dotfiles#Tools][existing solutions]] are built on some combination of git/stow/symlinks. This introduces the complexities and potential pitfalls of these tools. Git is designed for a directory of related files, whereas dotfiles are often scattered unrelated 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:
- Not limited to one parent directory - initialize any file, even outside =$HOME=
- No merge conflicts
- Pull or push a single file instead of the entire repo
- Revert a single file to a past revision without affecting other files
- Easily rewrite or delete file history
- Simple web interface for managing files remotely
Things Dotfile doesn't do:
- File encryption
- Manage non text files
- Manage large files
- Templates
- Branches
- Getting Started
- [[docs/cli.org#install][Install]] the CLI
- [[https://dotfilehub.com/signup][Create a Dotfilehub]] account to share files between machines
- [[https://dotfilehub.com/settings/cli][Setup the CLI]] to use remote functions
Optionally [[docs/web.org#self-host][self host]] a Dotfilehub instance.
- Documentation
- [[docs/cli.org][CLI Documentation]]
- [[docs/web.org][Web Documentation]]
- [[docs/acknowledgments.org][Acknowledgments]]
- Examples Dotfile commands are like git but simplified.
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
- Contribute Want to contribute? Open a pull request or an issue at [[https://github.com/knoebber/dotfile][github.com/knoebber/dotfile]]
Feedback is always appreciated - contact me at [[mailto:[email protected]][[email protected]]]