]>
git.madduck.net Git - code/vcsh.git/blobdiff - README.md
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
* IRC: #vcs-home on irc.oftc.net
* IRC: #vcs-home on irc.oftc.net
-* Mailing list: vcs-home@lists.madduck.net
+* Mailing list: http://lists.madduck.net/listinfo/vcs-home
* Pull requests or issues on https://github.com/RichiH/vcsh
* Pull requests or issues on https://github.com/RichiH/vcsh
advantages of vcsh. See sections 3 and 4 for detailed instructions and
examples.
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 at [here](http://richardhartmann.de/talks/).
+
# 3 Overview
## 3.1 Comparison to Other Solutions ##
# 3 Overview
## 3.1 Comparison to Other Solutions ##
-The files you see in $XDG_CONFIG _HOME/mr/available.d are mr configuration files
+The files you see in $XDG\_CONFIG\ _HOME/mr/available.d are mr configuration files
that contain the commands to manage (checkout, update etc.) a single
repository. vcsh repo configs end in .vcsh, git configs end in .git, etc. This
is optional and your preference. For example, this is what a zsh.vcsh
that contain the commands to manage (checkout, update etc.) a single
repository. vcsh repo configs end in .vcsh, git configs end in .git, etc. This
is optional and your preference. For example, this is what a zsh.vcsh
this repository and fork your own.
[$XDG_CONFIG_HOME/vcsh/repo.d/zsh.git]
this repository and fork your own.
[$XDG_CONFIG_HOME/vcsh/repo.d/zsh.git]
- checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' zsh
- update = vcsh run zsh git pull
- push = vcsh run zsh git push
- status = vcsh run zsh git status
- gc = vcsh run zsh git gc
+ checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' $MR_REPO
+ push = echo "Cannot push to read-only repo" >&2
+ #status = vcsh run $MR_REPO git $MR_ACTION
+ #commit = vcsh run $MR_REPO git $MR_ACTION
+ #gc = vcsh run $MR_REPO git $MR_ACTION
+
+The commented lines are only necessary if you are using `mr` prior to version
+1.11. Starting with this version, `vcsh` support is properly integrated.
-$XDG_CONFIG _HOME/mr/available.d contains *all available* repositories. Only
+$XDG\_CONFIG\ _HOME/mr/available.d contains *all available* repositories. Only
files/links present in mr/config.d, however, will be used by mr. That means
that in this example, only the zsh, gitconfigs, tmux and vim repositories will
be checked out. A simple `mr update` run in $HOME will clone or update those
files/links present in mr/config.d, however, will be used by mr. That means
that in this example, only the zsh, gitconfigs, tmux and vim repositories will
be checked out. A simple `mr update` run in $HOME will clone or update those
- include = cat $XDG_CONFIG_HOME/mr/config.d/*
+ # The following line is only needed if your mr does not have vcsh support
+ # in core, that is version 1.10 or older. Check the file itself if you are
+ # unsure.
+ include = cat /usr/share/mr/vcsh
+ # Include all (enabled) configuration snippets (see above)
+ include = cat ${XDG_CONFIG_HOME:-$HOME/.config}/mr/config.d/*
-$XDG_CONFIG _HOME/vcsh/repo.d is the directory where all git repositories which
+$XDG\_CONFIG\ _HOME/vcsh/repo.d is the directory where all git repositories which
are under vcsh's control are located. Since their working trees are configured
to be in $HOME, the files contained in those repositories will be put in $HOME
directly.
are under vcsh's control are located. Since their working trees are configured
to be in $HOME, the files contained in those repositories will be put in $HOME
directly.
example: `vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr`
2. Choose your repositories by linking them in config.d (or go with the default
you may have already configured by adding symlinks to git).
example: `vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr`
2. Choose your repositories by linking them in config.d (or go with the default
you may have already configured by adding symlinks to git).
-3. Run mr to clone the repositories: `cd; mr update`.
-4. Done.
+3. Make sure the line 'include = cat /usr/share/mr/vcsh' in .mrconfig points
+ to an existing file. Check the file itself to see if the line is necessary.
+4. Run mr to clone the repositories: `cd; mr update`.
+5. Done.
Hopefully the above could help explain how this approach saves time by
Hopefully the above could help explain how this approach saves time by
* ~/.gitignore.d
* ~/.mrconfig
* ~/.gitignore.d
* ~/.mrconfig
-* $XDG_CONFIG _HOME/mr/available.d/mr.vcsh
-* $XDG_CONFIG _HOME/mr/available.d/zsh.vcsh
-* $XDG_CONFIG _HOME/mr/config.d/mr.vcsh
-* $XDG_CONFIG _HOME/vcsh/repo.d/mr.git/
+* $XDG\_CONFIG\ _HOME/mr/available.d/mr.vcsh
+* $XDG\_CONFIG\ _HOME/mr/available.d/zsh.vcsh
+* $XDG\_CONFIG\ _HOME/mr/config.d/mr.vcsh
+* $XDG\_CONFIG\ _HOME/vcsh/repo.d/mr.git/
All of the files are part of the template repository, the directory is where
the template will be stored.
apt-get install mr
All of the files are part of the template repository, the directory is where
the template will be stored.
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
- cd !$
- git clone git://github.com/RichiH/vcsh.git vcsh
+ git clone git://github.com/RichiH/vcsh.git
- ln -s vcsh /usr/local/bin # or add it to your PATH
+ ln -s vcsh /usr/local/bin # or add it to your PATH
+
+#### 4.1.3 Clone the Template ####
+
vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr
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
mv ~/.zsh ~/zsh.bak
mv ~/.zshrc ~/zshrc.bak
-#### 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:
Now, it's time to edit the template config and fill it with your own remotes:
You're welcome to clone the example repository:
vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr
You're welcome to clone the example repository:
vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr
+ # make sure 'include = cat /usr/share/mr/vcsh' points to an exiting file
+ vim .mrconfig
Look around in the clone. It should be reasonably simple to understand. If not,
poke me, RichiH, on Freenode (query) or OFTC (#vcs-home).
Look around in the clone. It should be reasonably simple to understand. If not,
poke me, RichiH, on Freenode (query) or OFTC (#vcs-home).
~ % cat ~/.mrconfig
[DEFAULT]
~ % cat ~/.mrconfig
[DEFAULT]
+ # adapt /usr/share/mr/vcsh to your system if needed
+ include = cat /usr/share/mr/vcsh
include = cat $XDG_CONFIG_HOME/mr/config.d/*
~ % echo $XDG_CONFIG_HOME
/home/richih/.config
include = cat $XDG_CONFIG_HOME/mr/config.d/*
~ % echo $XDG_CONFIG_HOME
/home/richih/.config