From eb5687932cd1ebe3d5a5d0f56eee8d6aac8d8559 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 21 Oct 2007 01:54:40 -0400 Subject: [PATCH 1/1] include a simplified mrconfig and move the hairy stuff to mrconfig.complex --- debian/rules | 2 +- mrconfig | 112 ++++------------------------------------------- mrconfig.complex | 112 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 105 deletions(-) create mode 100644 mrconfig.complex diff --git a/debian/rules b/debian/rules index 4155333..3289304 100755 --- a/debian/rules +++ b/debian/rules @@ -16,7 +16,7 @@ binary-indep: build dh_clean -k dh_install mr usr/bin dh_installdocs README TODO - dh_installexamples mrconfig + dh_installexamples mrconfig mrconfig.complex dh_installman *.1 dh_installchangelogs dh_compress diff --git a/mrconfig b/mrconfig index 500985f..a209a2b 100644 --- a/mrconfig +++ b/mrconfig @@ -1,109 +1,13 @@ -# An example config file for the mr(1) command. +# A simple example config file for the mr(1) command. -[DEFAULT] -# 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"/.svn ]; then - git tag - elsif [ -d "$MR_REPO"/.git ]; 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 -# - mylaptop only succeeds if it's on my main development laptop, which -# gets lots of extra cruft -# - kite only succeeds on kite -lib = - wantsrc() { - 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) - return 0 - ;; - esac - fi - return 1 - } - mylaptop() { - test "$(hostname)" = kodama - } - kite() { - test "$(hostname)" = wren - } - -[src/mr] -checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/mr +[mr] +checkout = git clone git://git.kitenet.net/mr skip = ! wantsrc -[src/linux-2.6] +[linux-2.6] checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git -skip = ! mylaptop || ! wantsrc || - ([ "$1" = update ] && [ $(hours_since "$1") -lt 12 ]) - -[src/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 push kite -skip = ! wantsrc - -[html/www.debian.org] -# Still in CVS..urk! -checkout = - CVSROOT=:ext:joeyh@cvs.debian.org:/cvs/webwml - cvs 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 || ! wantsrc - -# My home directory, which I keep in svn. -[] -checkout = svn co svn+ssh://svn.kitenet.net/srv/svn/joey/trunk/home-$(hostname) joey -# run svnfix after each update -update = svn update && svnfix - -[mail] -checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/private/mail -skip = ! private +# only update once every 12 hours +skip = ([ "$1" = update ] && [ $(hours_since "$1") -lt 12 ]) -# Example of how to remember to delete a repo, when one mrconfig file is -# used on multiple systems. If you're feeling brave, use rm -rf $MR_REPO -# instead. This approach can also be used for renames. -[foo] -update = error "$MR_REPO is no longer used and should be deleted" -skip = ! test -d "$MR_REPO" +[debian-cd] +checkout = svn co svn://svn.debian.org/debian-cd/trunk debian-cd diff --git a/mrconfig.complex b/mrconfig.complex new file mode 100644 index 0000000..c59c8fe --- /dev/null +++ b/mrconfig.complex @@ -0,0 +1,112 @@ +# 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] +# 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"/.svn ]; then + git tag + elsif [ -d "$MR_REPO"/.git ]; 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 +# - mylaptop only succeeds if it's on my main development laptop, which +# gets lots of extra cruft +# - kite only succeeds on kite +lib = + wantsrc() { + 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) + return 0 + ;; + esac + fi + return 1 + } + mylaptop() { + test "$(hostname)" = kodama + } + kite() { + test "$(hostname)" = wren + } + +[src/mr] +checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/mr +skip = ! wantsrc + +[src/linux-2.6] +checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git +skip = ! mylaptop || ! wantsrc || + ([ "$1" = update ] && [ $(hours_since "$1") -lt 12 ]) + +[src/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 push kite +skip = ! wantsrc + +[html/www.debian.org] +# Still in CVS..urk! +checkout = + CVSROOT=:ext:joeyh@cvs.debian.org:/cvs/webwml + cvs 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 || ! wantsrc + +# My home directory, which I keep in svn. +[] +checkout = svn co svn+ssh://svn.kitenet.net/srv/svn/joey/trunk/home-$(hostname) joey +# run svnfix after each update +update = svn update && svnfix + +[mail] +checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/private/mail +skip = ! private + +# Example of how to remember to delete a repo, when one mrconfig file is +# used on multiple systems. If you're feeling brave, use rm -rf $MR_REPO +# instead. This approach can also be used for renames. +[foo] +update = error "$MR_REPO is no longer used and should be deleted" +skip = ! test -d "$MR_REPO" -- 2.39.2