Example configuration of mr with vcsh?

John Whitley whitley at bangpath.org
Fri May 27 21:47:04 CEST 2016

Marc Haber <mh+vcs-home at zugschlus.de> wrote:
> Does anybody coincidentally have a working mr configuration and usage
> examples to share? I would really appreciate that.

Hi Marc,

You can check out my setup at jwhitley/vcsh-root on Github[1]. See also the bootstrap branch at [2].  I’ve been meaning to add README files to these (and have setup vcsh for it!) but haven’t actually written those out yet.  :-(

So here’s a quick primer to my setup.  Dig in, and feel free to ask questions. I well realize that this stuff can be a bit mazelike.

# Bootstrapping

The bootstrap branch contains the setup script (bootstrap.sh) that’s used to install my vcsh configuration on a new system.  This is used on new physical hosts as well as on VMs.  E.g. I’ll have a step in a Vagrantfile that installs my setup on development VMs.  The bootstrap script also handles a lot of initial git configuration.

The bootstrap script is purposely minimal.  Rich bootstrap logic is provided via vcsh hooks.  See the hooks-available and hooks-enabled directories at [3], and browse the hook files for details.  These are currently used to enforce certain git configurations on all vcsh managed repos.  For example, git’s sparse checkout feature is enabled so that some filenames (e.g. Vagrantfile, README.md) are never actually checked out.  These files are useful for per-repo documentation and development, but aren’t intended to be part of my homedir setup.

# vcsh and mr notes

This repo uses its own local copies of vcsh and mr, since they are bootstrap requirements and there’s no telling whether these tools are even available from any local package manager.  These are installed under the `~/local` hierarchy.

The mr config lives at `.config/mr`.  Pre-configured repos live at `.config/mr/available.d`, and are symlinked into place to enabled them on a given system in `.config/mr/config.d`.  The symlinks in `config.d` are therefore the default enabled repos.

# Testing

Both master and bootstrap branches have Vagrantfiles used for ad-hoc testing of the respective branch in a VM.  That is, the `master` branch Vagrantfile is used to test changes in the local repo.  These changes must be committed but not yet pushed upstream.  The `bootstrap` branch Vagrantfile likewise tests local changes to the bootstrap script, installing using the current *remote* vcsh-root repo. See the usage instructions at the top of each file.

[1] https://github.com/jwhitley/vcsh-root
[2] https://github.com/jwhitley/vcsh-root/tree/bootstrap
[3] https://github.com/jwhitley/vcsh-root/tree/master/.config/vcsh

> Greetings
> Marc
> -- 
> -----------------------------------------------------------------------------
> Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
> Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
> Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421
> _______________________________________________
> vcs-home mailing list
> vcs-home at lists.madduck.net
> http://lists.madduck.net/listinfo/vcs-home

More information about the vcs-home mailing list