# An example config file for the mr(1) command. # # This is fairly close to the config file used by the author # although slightly cut down. [DEFAULT] # Include all available libs. include = cat /usr/share/mr/* 2>/dev/null || true # Teach mr to run a few git and svn specific commands. svn_cleanup = svn cleanup "$@" git_gc = git gc "$@" git_push = git push "$@" git_tag = git tag -l svn_tag = svn ls "$(LANG=C svn info . | grep -i ^URL: | cut -d ' ' -f 2 | sed -e 's/trunk/tags/')" # This hack is here because git-pull stupidly outputs tag info to stderr. # Shut it up but let real errors through, for use in cron. quietupdate = mr -s -n update 3>&1 1>/dev/null 2>&3 | egrep -v '(storing tag|tag: )' || true # Tests used below. # - anon checks whether this is an anonymous checkout, by testing what url # $HOME uses # - full checks whether I probably want a full checkout (quite large), # if not, the checkout is minimal # - wantmedia checks whether I probably want various large media files # here. # - private are hosts I trust private data to # - mylaptop only succeeds if it's on my main development laptop, which # gets lots of extra cruft # - kite only succeeds on kite lib = anon() { expr $(GIT_CONFIG=$HOME/.git/config git config remote.origin.url) : 'git://' >/dev/null } full() { test "$(whoami)" = joey } wantmedia() { if [ "$(whoami)" = joey ]; then case "$(hostname)" in kodama|dragon|dodo) return 0 ;; esac fi return 1 } private() { if [ "$(whoami)" = joey ]; then case "$(hostname)" in wren|kodama|dragon|dodo|bluebird|slug) return 0 ;; esac fi return 1 } mylaptop() { test "$(hostname)" = kodama } kite() { test "$(hostname)" = wren } # The root of my home directory. [] checkout = if anon; then git clone git://git.kitenet.net/joey/home joey else git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home joey fi # This is a dummy target, all it does is run fixups at the end of # an update. [tmp] update = fixups checkout = fixups status = : order = 25 [.etc] checkout = if anon; then git clone git://git.kitenet.net/joey/home-etc .etc else git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home-etc .etc fi [.cron] checkout = if anon; then git clone git://git.kitenet.net/joey/cron .cron else git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/cron .cron fi [packages/perl] order = 30 checkout = svn co svn+ssh://joeyh@svn.debian.org/svn/pkg-perl/trunk perl skip = ! mylaptop || ([ "$1" = update ] && ! hours_since "$1" 12) [linux-2.6] order = 20 checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git skip = ! mylaptop || ([ "$1" = update ] && ! hours_since "$1" 12) push = error "as if!" [dpkg] # A merge of the upstream dpkg git repo and my own personal branch. checkout = git clone git://git.debian.org/git/dpkg/dpkg.git && cd dpkg && git remote add kite ssh://git.kitenet.net/srv/git/kitenet.net/dpkg && git fetch kite && git checkout -b sourcev3 kite/sourcev3 update = git pull origin master && git pull kite sourcev3 commit = git commit -a && git push kite push = git push kite skip = ! mylaptop [html/www.debian.org] # Still in CVS..urk! checkout = cvs -d ':ext:joeyh@cvs.debian.org:/cvs/webwml' co -d www.debian.org webwml # cvs sucks sufficiently that I prefer to run these commands by hand, # and only rarely update = echo "skipping cvs update (too slow)" status = echo "skipping cvs status (too ugly)" skip = ! mylaptop || ! full