-# Teach mr how to run svn cleanup.
-cleanup = if [ -d "$MR_REPO"/.svn ]; then svn cleanup ; fi
-# And how to run git gc and push.
-gc = if [ -d "$MR_REPO"/.git ]; then git gc; fi
-push = if [ -d "$MR_REPO"/.git ]; then git push; fi
-# And how to list tags for git and svn.
-tag =
- if [ -d "$MR_REPO"/.git ]; then
- git tag -l
- elsif [ -d "$MR_REPO"/.svn ]; then
- url=$(LANG=C svn info . | grep -i ^URL: | cut -d ' ' -f 2)
- svn ls "$(echo '$url' | sed -e 's/trunk/tags/')"
- else
- error "unknown repo type"
- fi
-# 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 in the skips below.
-# - wantsrc checks whether I probably want a full source checkout (quite
-# large)
-# - wantmedia checks whether I probably want various large media files
-# here.
-# - private are hosts I trust private data to
+# 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_tag = git tag -l
+svn_tag = svn ls "$(LC_ALL=C svn info . | grep -i ^URL: | cut -d ' ' -f 2 | sed -e 's/trunk/tags/')"
+# I prefer to git-svn rebase to fetch
+git_svn_update = git svn rebase
+# 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
+# - on checks whether the given host basename is one of the listed
+# values. A value can also have a username in it, ie "joey@dodo".