X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f025519645efdd153b5de8957565915837771d51..5660edc8ef0fe9bc3eac2c41a45e66a2d61b7892:/mrconfig.complex diff --git a/mrconfig.complex b/mrconfig.complex index c0a1484..b96c5bf 100644 --- a/mrconfig.complex +++ b/mrconfig.complex @@ -9,59 +9,49 @@ 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 +git_tags = git tag -l +svn_tags = 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 -# - wantmedia checks whether I probably want various large media files -# here. -# - private are hosts I trust private data to +# - 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". # - mylaptop only succeeds if it's on my main development laptop, which # gets lots of extra cruft -# - kite only succeeds on kite lib = + hostname="$(hostname)" + whoami="$(whoami)" anon() { - expr $(GIT_CONFIG=$HOME/.git/config git config remote.origin.url) : 'git://' >/dev/null + ( GIT_CONFIG=$HOME/.git/config git config remote.origin.url || cat .git/remotes/origin ) | grep -q 'git://' } full() { - test "$(whoami)" = joey + test "$whoami" = joey && ! anon } - 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) + on() { + for host in $@; do + if [ "${host%@*}" != "${host#*@}" ]; then + if [ "$whoami" != "${host%@*}" ]; then + continue + fi + host="${host#*@}" + fi + if [ "$hostname" = "$host" ]; then return 0 - ;; - esac - fi + fi + done return 1 } mylaptop() { - test "$(hostname)" = kodama - } - kite() { - test "$(hostname)" = wren + on joey@gnu } # The root of my home directory. -[] +[.] +order = 1 checkout = if anon; then git clone git://git.kitenet.net/joey/home joey @@ -69,15 +59,30 @@ checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home joey fi +[Maildir] +# Dummy target to create Maildir. Doesn't run offlineimap since I have that +# cronned on machines where I want it. +update = : +skip = ! full +checkout = mkdir Maildir Maildir/cur Maildir/new Maildir/tmp; chmod 700 Maildir +status = : + +[mail] +checkout = git clone ssh://joey@git.kitenet.net/srv/git/joey/private/mail +# I use mairix to index my mail archive; keep its index up-to-date. +fixups = if [ "$(which mairix)" ]; then ionice -c 3 mairix -Q; fi +skip = ! mylaptop + +[tmp] # This is a dummy target, all it does is run fixups at the end of # an update. -[tmp] -update = fixups -checkout = fixups +fixups = $HOME/bin/fixups +checkout = mkdir -p $HOME/tmp status = : order = 25 [.etc] +order = 2 checkout = if anon; then git clone git://git.kitenet.net/joey/home-etc .etc @@ -104,6 +109,11 @@ checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linu skip = ! mylaptop || ([ "$1" = update ] && ! hours_since "$1" 12) push = error "as if!" +[/etc] +# I use etckeeper to keep /etc in git. But it only works if I'm root, +# and if it's not already in etc, skip it. +skip = ! test -d /etc/.git || ! test "$(whoami)" = root + [dpkg] # A merge of the upstream dpkg git repo and my own personal branch. checkout =