X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f025519645efdd153b5de8957565915837771d51..c97d4365f853db5cc920bc192340b989d559a771:/mrconfig.complex diff --git a/mrconfig.complex b/mrconfig.complex index c0a1484..47cf979 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,50 @@ 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 +# - 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". # - wantmedia checks whether I probably want various large media files -# here. +# 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 = + 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 + on() { + for host in $@; do + if [ "${host%@*}" != "${host#*@}" ]; then + if [ "$whoami" != "${host%@*}" ]; then + continue + fi + host="${host#*@}" + fi + if [ "$hostname" = "$host" ]; then + return 0 + fi + done return 1 } + wantmedia() { + on joey@kodama joey@dragon joey@dodo joey@turtle + } private() { - if [ "$(whoami)" = joey ]; then - case "$(hostname)" in - wren|kodama|dragon|dodo|bluebird|slug) - return 0 - ;; - esac - fi - return 1 + on joey@wren joey@kodama joey@dragon joey@dodo joey@turtle \ + joey@blurbird joey@slug } mylaptop() { - test "$(hostname)" = kodama - } - kite() { - test "$(hostname)" = wren + on kodama } # The root of my home directory. [] +order = 1 checkout = if anon; then git clone git://git.kitenet.net/joey/home joey @@ -69,6 +72,14 @@ checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home joey fi +# Dummy target to create Maildir. Doesn't run offlineimap since I have that +# cronned on machines where I want it. +[Maildir] +update = : +skip = ! full +checkout = mkdir Maildir Maildir/cur Maildir/new Maildir/tmp; chmod 700 Maildir +status = : + # This is a dummy target, all it does is run fixups at the end of # an update. [tmp] @@ -78,6 +89,7 @@ status = : order = 25 [.etc] +order = 2 checkout = if anon; then git clone git://git.kitenet.net/joey/home-etc .etc @@ -104,6 +116,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 =