147 lines
4.0 KiB
Markdown
147 lines
4.0 KiB
Markdown
# homesick
|
|
|
|
[](https://travis-ci.org/technicalpickles/homesick)
|
|
|
|
A man's home (directory) is his castle, so don't leave home with out it.
|
|
|
|
Homesick is sorta like [rip](http://github.com/defunkt/rip), but for dotfiles. It uses git to clone a repository containing dotfiles, and saves them in `~/.homesick`. It then allows you to symlink all the dotfiles into place with a single command.
|
|
|
|
We call a repository that is compatible with homesick to be a 'castle'. To act as a castle, a repository must be organized like so:
|
|
|
|
* Contains a 'home' directory
|
|
* 'home' contains any number of files and directories that begin with '.'
|
|
|
|
To get started, install homesick first:
|
|
|
|
gem install homesick
|
|
|
|
Next, you use the homesick command to clone a castle:
|
|
|
|
homesick clone git://github.com/technicalpickles/pickled-vim.git
|
|
|
|
Alternatively, if it's on github, there's a slightly shorter way:
|
|
|
|
homesick clone technicalpickles/pickled-vim
|
|
|
|
With the castle cloned, you can now link its contents into your home dir:
|
|
|
|
homesick symlink pickled-vim
|
|
|
|
If you use the shorthand syntax for GitHub repositories in your clone, please note you will instead need to run:
|
|
|
|
homesick symlink technicalpickles/pickled-vim
|
|
|
|
If you're not sure what castles you have around, you can easily list them:
|
|
|
|
homesick list
|
|
|
|
To pull your castle (or all castles):
|
|
|
|
homesick pull --all|CASTLE
|
|
|
|
To commit your castle's changes:
|
|
|
|
homesick commit CASTLE
|
|
|
|
To push your castle:
|
|
|
|
homesick push CASTLE
|
|
|
|
Not sure what else homesick has up its sleeve? There's always the built in help:
|
|
|
|
homesick help
|
|
|
|
## .homesick_subdir
|
|
|
|
`homesick symlink` basically makes symlink to only first depth in `castle/home`. If you want to link nested files/directories, please use .homesick_subdir.
|
|
|
|
For example, when you have castle like this:
|
|
|
|
castle/home
|
|
`-- .config
|
|
`-- fooapp
|
|
|-- config1
|
|
|-- config2
|
|
`-- config3
|
|
|
|
and have home like this:
|
|
|
|
$ tree -a
|
|
~
|
|
|-- .config
|
|
| `-- barapp
|
|
| |-- config1
|
|
| |-- config2
|
|
| `-- config3
|
|
`-- .emacs.d
|
|
|-- elisp
|
|
`-- inits
|
|
|
|
You may want to symlink only to `castle/home/.config/fooapp` instead of `castle/home/.config` because you already have `~/.config/barapp`. In this case, you can use .homesick_subdir. Please write "directories you want to look up sub direcoties (instead of just first depth)" in this file.
|
|
|
|
castle/home/.homesick_subdir
|
|
|
|
.config
|
|
|
|
and run `homesick symlink CASTLE`. The result is:
|
|
|
|
~
|
|
|-- .config
|
|
| |-- barapp
|
|
| | |-- config1
|
|
| | |-- config2
|
|
| | `-- config3
|
|
| `-- fooapp -> castle/home/.config/fooapp
|
|
`-- .emacs.d
|
|
|-- elisp
|
|
`-- inits
|
|
|
|
Or `homesick track NESTED_FILE CASTLE` adds a line automatically. For example:
|
|
|
|
homesick track .emacs.d/elisp castle
|
|
|
|
castle/home/.homesick_subdir
|
|
|
|
.config
|
|
.emacs.d
|
|
|
|
home directory
|
|
|
|
~
|
|
|-- .config
|
|
| |-- barapp
|
|
| | |-- config1
|
|
| | |-- config2
|
|
| | `-- config3
|
|
| `-- fooapp -> castle/home/.config/fooapp
|
|
`-- .emacs.d
|
|
|-- elisp -> castle/home/.emacs.d/elisp
|
|
`-- inits
|
|
|
|
and castle
|
|
|
|
castle/home
|
|
|-- .config
|
|
| `-- fooapp
|
|
| |-- config1
|
|
| |-- config2
|
|
| `-- config3
|
|
`-- .emacs.d
|
|
`-- elisp
|
|
|
|
## Note on Patches/Pull Requests
|
|
|
|
* Fork the project.
|
|
* Make your feature addition or bug fix.
|
|
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
|
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
|
* Send me a pull request. Bonus points for topic branches.
|
|
|
|
## Need homesick without the ruby dependency?
|
|
|
|
Check out [homeshick](https://github.com/andsens/homeshick).
|
|
|
|
## Copyright
|
|
|
|
Copyright (c) 2010 Joshua Nichols. See LICENSE for details.
|