X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f025519645efdd153b5de8957565915837771d51..9c3234f5d553312f47d934f70bd1481bed58df9e:/mrconfig.complex?ds=inline diff --git a/mrconfig.complex b/mrconfig.complex index c0a1484..5924de1 100644 --- a/mrconfig.complex +++ b/mrconfig.complex @@ -9,10 +9,11 @@ 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. +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 +# 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. @@ -20,48 +21,40 @@ quietupdate = mr -s -n update 3>&1 1>/dev/null 2>&3 | egrep -v '(storing tag|tag # $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 +62,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] +# I use mairix to index my mail archive; run it after each update. +checkout = git clone ssh://joey@git.kitenet.net/srv/git/joey/private/mail +update = git pull "$@"; if [ "$(which mairix)" ]; then 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 +update = $HOME/bin/fixups +checkout = $HOME/bin/fixups status = : order = 25 [.etc] +order = 2 checkout = if anon; then git clone git://git.kitenet.net/joey/home-etc .etc @@ -104,6 +112,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 =