]> git.madduck.net Git - code/myrepos.git/blobdiff - mrconfig.complex

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Fix the hours_since function built into mr's shell library to not exit, but return...
[code/myrepos.git] / mrconfig.complex
index c0a1484aae7f267fd2adc3a27639983bea2980fe..5924de146e714d2d5dace3b3c075c0e095960a54 100644 (file)
@@ -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 "$@"
 # 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
 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.
 # 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
 #   $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
 # - mylaptop only succeeds if it's on my main development laptop, which 
 #   gets lots of extra cruft
-# - kite only succeeds on kite
 lib = 
 lib = 
+       hostname="$(hostname)"
+       whoami="$(whoami)"
        anon() {
        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() {
        }
        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
                                return 0
-                       ;;
-                       esac
-               fi
+                       fi
+               done
                return 1
        }
        mylaptop() {
                return 1
        }
        mylaptop() {
-               test "$(hostname)" = kodama
-       }
-       kite() {
-               test "$(hostname)" = wren
+               on joey@gnu
        }
 
 # The root of my home directory.
        }
 
 # The root of my home directory.
-[]
+[.]
+order = 1
 checkout =
        if anon; then
                git clone git://git.kitenet.net/joey/home joey
 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
 
                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.
 # 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]
 status = :
 order = 25
 
 [.etc]
+order = 2
 checkout = 
        if anon; then
                git clone git://git.kitenet.net/joey/home-etc .etc
 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!"
 
 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 = 
 [dpkg]
 # A merge of the upstream dpkg git repo and my own personal branch.
 checkout =