====== Managing Dotfiles: ====== === Use of dotfiles: === Dotfiles are used to configure command line applications and reside in the user's home directory. Either in their own (mostly hidden) application directory (~/.weechat/*.conf), in the home directory (~/.bashrc), or in a directory stored for all applications (~/.config/). Your dotfiles will most likely be the longest project you ever work on. For this reason, it is worthwhile to organize your dotfiles project in a disciplined manner for maintainability and extensibility. === Version Control: === It is worth keeping your configuration under version control for several reasons. Keeping a history of your changes allows you to safely experiment with new configurations, revert bad changes, and review the details of past changes. When working on multiple systems, choosing to use a version control system is a no-brainer — version control helps you keep your dotfiles in sync while properly dealing with changes being made on different systems. It is possible to use dedicated tools such as [[https://github.com/thoughtbot/rcm|rcm]] or [[https://github.com/technicalpickles/homesick|homesick]] for this purpose. These tools usually handle both versioning and installation of dotfiles, which is accomplished by using a dedicated version control system behind the scenes and providing a front end designed specifically for managing dotfiles. These tools are additional dependencies that need to be installed prior to setting up your dotfiles. They are fairly heavyweight, so I prefer to avoid external dependencies in favor of a simpler, self-contained setup. As a bonus, there is one less thing that needs to be done when setting up new systems.