Alphabetical list of surnames of everyone who ever committed to this repository.
Auto-generated from tools/list_CONTRIBUTORS.
+Skurikhin Alexander <a@skurih.in>
Eric Bouchut <ebouchut@gmail.com>
Dridi Boukelmoune <dridi.boukelmoune@gmail.com>
Rob Cornish <jrmcornish@gmail.com>
Vincent Demeester <vincent@demeester.fr>
+Jeff Fein-Worton <jeff@fein-worton.com>
Thomas Ferris Nicolaisen <tfnico@gmail.com>
martin f. krafft <madduck@madduck.net>
Alessandro Ghedini <alessandro@ghedini.me>
Dieter Plaetinck <dieter@plaetinck.be>
Corey Quinn <corey@sequestered.net>
Pavlos Ratis <dastergon@gentoo.org>
+Dewey Sasser <dewey@sasser.com>
Gernot Schulz <post@gernot-schulz.com>
+Andrew Schwartzmeyer <andrew@schwartzmeyer.com>
Dato Simó <dato@net.com.org.es>
Alexander Skurikhin <a.skurihin@gmail.com>
Jonathan Sternberg <jonathansternberg@gmail.com>
# Index
-1. [30 second howto](#30-second-howto)
+1. [30 Second How-to](#30-second-how-to)
2. [Introduction](#introduction)
-3. [Usage Exmaples](#usage-examples)
+3. [Usage Examples](#usage-examples)
4. [Overview](#overview)
5. [Getting Started](#getting-started)
6. [Contact](#contact)
-# 30 second howto
+# 30 Second How-to
While it may appear that there's an overwhelming amount of documentation and
while the explanation of the concepts behind `vcsh` needs to touch a few gory
other. This makes setting up any new machine a breeze. It can take literally
less than five minutes to go from standard installation to fully set up system.
-We suggest using [myrepos][myrepos] to manage both `vcsh` and other repositories. The
-`mr` utility takes care of pulling in and pushing out new data for a variety of
-version control systems. While the use of myrepos is technically optional, it will
-be an integral part of the proposed system that follows.
+We suggest using [myrepos][myrepos] to manage both `vcsh` and other
+repositories. The `mr` utility takes care of pulling in and pushing
+out new data for a variety of version control systems. While the use
+of myrepos is technically optional, it will be an integral part of the
+proposed system that follows. For instance, you can use
+[myrepos][myrepos] to track repositories in home such as `.emacs.d`,
+which `mr` can clone and update for you automatically. To do this,
+just add a `mr` configuration file to `availabile.d` with a `checkout`
+command to clone the repo, and set the [title] to the desired
+location, e.g. `$HOME/.emacs.d`. Try the `mr register` command in an
+existing repository, then view `~/.mrconfig` for an example.
## Default Directory Layout
welcome to clone from this repository and fork your own.
[$XDG_CONFIG_HOME/vcsh/repo.d/zsh.git]
- checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' zsh
+ checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' 'zsh'
update = vcsh zsh pull
push = vcsh zsh push
status = vcsh zsh status
gc = vcsh zsh gc
+ [$HOME/.emacs.d]
+ checkout = vcsh clone 'git://github.com/andschwa/emacs.git' '.emacs.d'
+
### config.d
$XDG\_CONFIG\_HOME/mr/available.d contains *all available* repositories. Only
Make sure none of the following files and directories exist for your test
(user). If they do, move them away for now:
-* ~/.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/
+* `~/.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/`
All of the files are part of the template repository, the directory is where
the template will be stored.
If you prefer to use the devel package that installs the git HEAD version it
is available [here](https://aur.archlinux.org/packages/vcsh-git/).
-#### Mac OSX
+#### Mac OS X
Formulas are available for vcsh as well as git and myrepos through [homebrew](http://brew.sh). The
vcsh formula is set to depend on myrepos, so you only need one install command:
ln -s ../available.d/* .
-myrepos is used to actually retrieve configs, etc
+[myrepos][myrepos] is used to actually retrieve configs, etc.
~ % 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
+2014-03-13 Richard Hartmann <richih.mailinglist@gmail.com>
+
+ * Release 1.20140313 -- the "Git won a prize" edition
+ * Initialize repos with --shared=0600
+ * Fix cloning from some spefically-named remotes
+ * Support custom gitattribute files
+ * Support filenames with whitespace in gitignores
+ * Pass out git exit codes
+ * Switch to static, pre-built manpage
+ * Improve documentation
+ * Use more portable find(1) syntax
+ * Various minor improvements
+
2013-12-29 Richard Hartmann <richih.mailinglist@gmail.com>
* Release 1.20131229
--- /dev/null
+#!/bin/sh
+
+# This adds a remote origin at $GITURL/dotfiles/$VCSH_DIRECTORY which
+# is helpful for creating new dotfile repositories that you plan to
+# store on (e.g.) Github.
+#
+# You must set $GITURL in order to use this hook. For example, add the
+# following to your .bashrc (or equivalent for your shell), replacing
+# YOURUSERNAME with your github username:
+#
+# export GITURL="git@github.com:YOURUSERNAME"
+
+if [ -z $GITURL ]; then
+ echo "\$GITURL is not set; please see post-init-add-origin hook"
+ exit 1;
+fi
+
+vcsh $VCSH_DIRECTORY remote add origin $GITURL/dotfiles/$VCSH_DIRECTORY
--- /dev/null
+#!/bin/sh
+
+# This sets up your new repos with mr.
+
+cat > $HOME/.config/mr/available.d/$VCSH_DIRECTORY.vcsh << EOF
+[\$HOME/.config/vcsh/repo.d/$VCSH_DIRECTORY.git]
+checkout = vcsh clone $GITURL/dotfiles/$VCSH_DIRECTORY.git
+EOF
+
+ln -s $HOME/.config/mr/available.d/$VCSH_DIRECTORY.vcsh $HOME/.config/mr/config.d/
Interesting knobs you can turn:
+* <$VCSH_GITATTRIBUTES>:
+ Can be <none>, or any other value.
+
+ <none> will not maintain Git attributes in a special location.
+
+ If set to any other value, repo-specific gitattributes files will be maintained.
+
+ Defaults to <none>.
+
* <$VCSH_GITIGNORE>:
Can be <exact>, <none>, or <recursive>.
#!/bin/sh
+# This program is licensed under the GNU GPL version 2 or later.
+# (c) Richard "RichiH" Hartmann <richih@debian.org>, 2012-2014
+# For details, see LICENSE. To submit patches, you have to agree to
+# license your code under the GNU GPL version 2 or later.
+
+
echo 'Alphabetical list of surnames of everyone who ever committed to this repository.
Auto-generated from tools/list_CONTRIBUTORS.
'
#!/bin/sh
# This program is licensed under the GNU GPL version 2 or later.
-# (c) Richard "RichiH" Hartmann <richih@debian.org>, 2011-2013
+# (c) Richard "RichiH" Hartmann <richih@debian.org>, 2011-2014
# For details, see LICENSE. To submit patches, you have to agree to
# license your code under the GNU GPL version 2 or later.
# If '.git-HEAD' is appended to the version, you are seeing an unreleased
# version of vcsh; the master branch is supposed to be clean at all times
# so you can most likely just use it nonetheless
-VERSION='1.20131229.git-HEAD'
+VERSION='1.20140313'
SELF=$(basename $0)
fatal() {
: ${VCSH_HOOK_D:=$XDG_CONFIG_HOME/vcsh/hooks-enabled}
: ${VCSH_BASE:=$HOME}
: ${VCSH_GITIGNORE:=exact}
+: ${VCSH_GITATTRIBUTES:=none}
: ${VCSH_WORKTREE:=absolute}
if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xnone' ] && [ ! "x$VCSH_GITIGNORE" = 'xrecursive' ]; then
git config core.worktree "$VCSH_BASE"
fi
[ ! "x$VCSH_GITIGNORE" = 'xnone' ] && git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
- git config core.attributesfile ".gitattributes.d/$VCSH_REPO_NAME"
+ [ ! "x$VCSH_GITATTRIBUTES" = 'xnone' ] && git config core.attributesfile ".gitattributes.d/$VCSH_REPO_NAME"
git config vcsh.vcsh 'true'
use
[ -e "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME"
check_dir "$VCSH_REPO_D"
[ ! "x$VCSH_GITIGNORE" = 'xnone' ] && check_dir "$VCSH_BASE/.gitignore.d"
-check_dir "$VCSH_BASE/.gitattributes.d"
+[ ! "x$VCSH_GITATTRIBUTES" = 'xnone' ] && check_dir "$VCSH_BASE/.gitattributes.d"
verbose "$VCSH_COMMAND begin"
export VCSH_COMMAND=$(echo $VCSH_COMMAND | sed 's/-/_/g')
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "VCSH" "1" "February 2014" "" ""
+.TH "VCSH" "1" "March 2014" "" ""
.
.SH "NAME"
\fBvcsh\fR \- Version Control System for $HOME \- multiple Git repositories in $HOME
Interesting knobs you can turn:
.
.TP
+\fI$VCSH_GITATTRIBUTES\fR
+Can be \fInone\fR, or any other value\.
+.
+.IP
+\fInone\fR will not maintain Git attributes in a special location\.
+.
+.IP
+If set to any other value, repo\-specific gitattributes files will be maintained\.
+.
+.IP
+Defaults to \fInone\fR\.
+.
+.TP
\fI$VCSH_GITIGNORE\fR
Can be \fIexact\fR, \fInone\fR, or \fIrecursive\fR\.
.