trying out vcsh

Brian May brian at
Mon Feb 6 01:16:15 CET 2012


Just recently I heard of this vcsh thing, just some of my initial thoughts.

Previously I managed my configuration using the "most trendy" vcs
available (ie. starting with rcs!) and using my set of scripts to
customize the configuration for every host. Unfortunately I came to
realize that while the approach was very flexible, it is also rather
complicated. I made it too flexible and as such too complicated. Also
customizing config files for each host doesn't work so well when
config files are shared between hosts, e.g. shared NFS. Much better to
use the same files when possible, and e.g. have the bash scripts
change behaviour depending on the system when logging in.

So I have been looking out for a simpler approach, when I saw vcsh.

So far it seems like a really good approach. Just some minor concerns though:

1. Instructions should perhaps link to instead of the email

2. I found following the instructions for creating new repositories
insufficient (section 4.1.4); I also had to add the following to

[branch "master"]
        remote = origin
        merge = refs/heads/master

otherwise "mr pull" won't work. Is there an easier way to make this
change, e.g. using git command line?

3. If I accidentally add a repository I didn't want, is there an easy
way of removing it and the checked out files? Maybe this is what vcsh
delete is meant to do?

4. What is the recommended practise for $HOME/.gitignore? I found this
file on one host only, and it is not committed anywhere. Should I be
adding it to a repository?

5. Suspect this is related to 4; am concerned about the possibility
that I might accidentally commit the same file to two different
repositories. For example by running git add on the wrong repository.
Are there any safe guards to prevent this from happening?

6. Would it be possible to implement commands that, assuming the file
is already committed to an active repository, automatically work out
this repository from the list of files? e.g.

vcsh add .zshenv
vcsh commit


vcsh commit .zshenv

7. I can see why it is done this way, but not entirely comfortable
with having duplicate information about repositories (e.g. the
upstream repository) both in $HOME/.config/mr/available.d and
$HOME/.config/vcsh/repo.d . For example, if you want to change to
upstream repository, it becomes clumsy to do so; I think every host
would have to be updated manually (at least the repo.d directories).
Similarly, when a repository is activated, there are two places that
have to be changed to reflect this that could become inconsistent with
each other. Still thinking about this issue.

Brian May <brian at>

More information about the vcs-home mailing list