* IRC: #vcs-home on irc.oftc.net
-* Mailing list: http://lists.madduck.net/listinfo/vcs-home
+* Mailing list: [http://lists.madduck.net/listinfo/vcs-home][vcs-home-list]
-* Pull requests or issues on https://github.com/RichiH/vcsh
+* Pull requests or issues on [https://github.com/RichiH/vcsh][vcsh]
# 2 Introduction #
-vcsh allows you to have several git repositories, all maintaining their working
-trees in $HOME without clobbering each other. That, in turn, means you can have
-one repository per config set (zsh, vim, ssh, etc), picking and choosing which
-configs you want to use on which machine.
-
-vcsh was designed with [mr] [1] in mind so you might want to install that, as
+[vcsh][vcsh] allows you to maintain several git repositories in one single
+directory. They all maintain their working trees without clobbering each other
+or interfering otherwise. By default, all git repositories maintained via
+`vcsh` are stored in <$HOME> but you can override this setting if you want to.
+All that means that you can have one repository per application or application
+family, i.e. `zsh`, `vim`, `ssh`, etc. This, in turn, allows you to clone
+custom sets of configurations onto different machines or even for different
+users; picking and mixing which configurations you want to use where.
+For example, you may not need to have your `mplayer` configuration on a server
+or available to root and you may want to maintain different configuration for
+`ssh` on your personal and your work machines.
+
+`vcsh` was designed with [mr][mr] in mind so you might want to install that, as
well.
-Read INSTALL.md for detailed setup instructions.
+Read <INSTALL.md> and <PACKAGING.md> for instructions specific to your operating
+system.
The following overview will try to give you an idea of the use cases and
-advantages of vcsh. See sections 3 and 4 for detailed instructions and
+advantages of `vcsh`. See sections 3 and 4 for detailed instructions and
examples.
+## 2.1 Talks ##
+
+Some people found it useful to look at slides and videos explaining how `vcsh`
+works.
+They can all be found [on the author's talk page][talks].
+
# 3 Overview
## 3.1 Comparison to Other Solutions ##
Most people who decide to put their dotfiles under version control start with a
-**single repository in $HOME**, adding all their dotfiles (and possibly more)
+single repository in <$HOME>, adding all their dotfiles (and possibly more)
to it. This works, of course, but can become a nuisance as soon as you try to
manage more than one host.
The next logical step is to create single-purpose repositories in, for example,
-~/.dotfiles and to create **symbolic links in $HOME**. This gives you the
+<~/.dotfiles> and to create symbolic links into <$HOME>. This gives you the
flexibility to check out only certain repositories on different hosts. The
downsides of this approach are the necessary manual steps of cloning and
-symlinking the individual repositories. It will probably become a nuisance when
-you try to manage more than two hosts.
+symlinking the individual repositories.
-**vcsh** takes this second approach one step further. It expects
-**single-purpose repositories** and stores them in a hidden directory (similar
-to ~/.dotfiles). However, it does not create symbolic links in $HOME; it puts
-the **actual files right into $HOME**.
+`vcsh` takes this second approach one step further. It expects
+single-purpose repositories and stores them in a hidden directory (similar
+to <~/.dotfiles>). However, it does not create symbolic links in <$HOME>; it
+puts the actual files right into <$HOME>.
-Furthermore, by making use of [mr] [1], it makes it very easy to enable/disable
-and clone a large number of repositories. The use of mr is technically optional
-(see 4.3), but it will be an integral part of the proposed system that follows.
+Furthermore, by making use of [mr][mr], it makes it very easy to enable/disable
+and clone a large number of repositories. The use of `mr` is technically
+optional (see section 4.3), but it will be an integral part of the proposed
+system that follows.
## 3.2 Default Directory Layout ##
apt-get install mr
-#### 4.1.2 Clone the Template ####
+#### 4.1.2 Install vcsh ####
+
+#### 4.1.2.1 Debian ####
+
+If you are using Debian Squeeze, you will need to enable backports
+
+ apt-get install vcsh
+
+#### 4.1.2.2 Arch Linux ####
+
+vcsh is availabe via [AUR](https://aur.archlinux.org/packages.php?ID=54164)
+and further documentation about the use of AUR is available
+[on Arch's wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository).
+
+ cd /var/abs/local/
+ wget https://aur.archlinux.org/packages/vc/vcsh-git/vcsh-git.tar.gz
+ tar xfz vcsh-git.tar.gz
+ cd vcsh-git
+ makepkg -s
+ pacman -U vcsh*.pkg.tar.xz
+
+#### 4.1.2.3 From source ####
+If your version of mr is older than version 1.07, make sure to put
+
+ include = cat /usr/share/mr/vcsh
+
+into your .mrconfig .
+
+ # choose a location for your checkout
cd $HOME
mkdir -p ~/work/git
- git clone git://github.com/RichiH/vcsh.git vcsh
- # make sure 'include = cat /usr/share/mr/vcsh' points to an exiting file
- vim .mrconfig
+ git clone git://github.com/RichiH/vcsh.git
cd vcsh
ln -s vcsh /usr/local/bin # or add it to your PATH
cd
+
+#### 4.1.3 Clone the Template ####
+
vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr
-#### 4.1.3 Enable Your Test Repository ####
+#### 4.1.4 Enable Your Test Repository ####
mv ~/.zsh ~/zsh.bak
mv ~/.zshrc ~/zshrc.bak
cd
mr up
-#### 4.1.4 Set Up Your Own Repositories ####
+#### 4.1.5 Set Up Your Own Repositories ####
Now, it's time to edit the template config and fill it with your own remotes:
vcsh run $repo git pull;
done
-----------
-
-mr can be found at: [http://kitenet.net/~joey/code/mr/][1]
-[1]: http://kitenet.net/~joey/code/mr/ (http://kitenet.net/~joey/code/mr/)
+[mr]: http://kitenet.net/~joey/code/mr/
+[talks]: http://richardhartmann.de/talks/
+[vcsh]: https://github.com/RichiH/vcsh
+[vcs-home-list]: http://lists.madduck.net/listinfo/vcs-home