]> git.madduck.net Git - code/myrepos.git/blob - 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:

make function variables local
[code/myrepos.git] / mrconfig.complex
1 # An example config file for the mr(1) command.
2 #
3 # This is fairly close to the config file used by the author
4 # although slightly cut down.
5
6 [DEFAULT]
7 # Include all available libs.
8 include = cat /usr/share/mr/* 2>/dev/null || true
9 # Teach mr to run a few git and svn specific commands.
10 svn_cleanup = svn cleanup "$@"
11 git_gc = git gc "$@"
12 git_push = git push "$@"
13 svn_push = :
14 git_tag = git tag -l
15 svn_tag = svn ls "$(LC_ALL=C svn info . | grep -i ^URL: | cut -d ' ' -f 2 | sed -e 's/trunk/tags/')"
16 # This hack is here because git pull stupidly outputs tag info to stderr.
17 # Shut it up but let real errors through, for use in cron.
18 quietupdate = mr -s -n update 3>&1 1>/dev/null 2>&3 | egrep -v '(storing tag|tag: )' || true
19 # Tests used below.
20 # - anon checks whether this is an anonymous checkout, by testing what url
21 #   $HOME uses
22 # - full checks whether I probably want a full checkout (quite large),
23 #   if not, the checkout is minimal
24 # - on checks whether the given host basename is one of the listed
25 #   values. A value can also have a username in it, ie "joey@dodo".
26 # - wantmedia checks whether I probably want various large media files
27 #   here
28 # - private are hosts I trust private data to
29 # - mylaptop only succeeds if it's on my main development laptop, which 
30 #   gets lots of extra cruft
31 lib = 
32         hostname="$(hostname)"
33         whoami="$(whoami)"
34         anon() {
35                 ( GIT_CONFIG=$HOME/.git/config git config remote.origin.url || cat .git/remotes/origin ) | grep -q 'git://'
36         }
37         full() {
38                 test "$whoami" = joey && ! anon
39         }
40         on() {
41                 for host in $@; do
42                         if [ "${host%@*}" != "${host#*@}" ]; then
43                                 if [ "$whoami" != "${host%@*}" ]; then
44                                         continue
45                                 fi
46                                 host="${host#*@}"
47                         fi
48                         if [ "$hostname" = "$host" ]; then
49                                 return 0
50                         fi
51                 done
52                 return 1
53         }
54         wantmedia() {
55                 on joey@kodama joey@dragon joey@dodo joey@turtle
56         }
57         private() {
58                 on joey@wren joey@kodama joey@dragon joey@dodo joey@turtle \
59                         joey@blurbird joey@slug
60         }
61         mylaptop() {
62                 on kodama
63         }
64
65 # The root of my home directory.
66 []
67 order = 1
68 checkout =
69         if anon; then
70                 git clone git://git.kitenet.net/joey/home joey
71         else
72                 git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home joey
73         fi
74
75 # Dummy target to create Maildir. Doesn't run offlineimap since I have that
76 # cronned on machines where I want it.
77 [Maildir]
78 update = :
79 skip = ! full
80 checkout = mkdir Maildir Maildir/cur Maildir/new Maildir/tmp; chmod 700 Maildir
81 status = :
82
83 # This is a dummy target, all it does is run fixups at the end of
84 # an update.
85 [tmp]
86 update = fixups
87 checkout = fixups
88 status = :
89 order = 25
90
91 [.etc]
92 order = 2
93 checkout = 
94         if anon; then
95                 git clone git://git.kitenet.net/joey/home-etc .etc
96         else
97                 git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/home-etc .etc
98         fi
99
100 [.cron]
101 checkout =
102         if anon; then
103                 git clone git://git.kitenet.net/joey/cron .cron
104         else
105                 git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/cron .cron
106         fi
107
108 [packages/perl]
109 order = 30
110 checkout = svn co svn+ssh://joeyh@svn.debian.org/svn/pkg-perl/trunk perl
111 skip = ! mylaptop || ([ "$1" = update ] && ! hours_since "$1" 12)
112
113 [linux-2.6]
114 order = 20
115 checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
116 skip = ! mylaptop || ([ "$1" = update ] && ! hours_since "$1" 12)
117 push = error "as if!"
118
119 [/etc]
120 # I use etckeeper to keep /etc in git. But it only works if I'm root, 
121 # and if it's not already in etc, skip it.
122 skip = ! test -d /etc/.git || ! test "$(whoami)" = root
123
124 [dpkg]
125 # A merge of the upstream dpkg git repo and my own personal branch.
126 checkout = 
127         git clone git://git.debian.org/git/dpkg/dpkg.git &&
128         cd dpkg &&
129         git remote add kite ssh://git.kitenet.net/srv/git/kitenet.net/dpkg &&
130         git fetch kite &&
131         git checkout -b sourcev3 kite/sourcev3
132 update = git pull origin master && git pull kite sourcev3
133 commit = git commit -a && git push kite
134 push = git push kite
135 skip = ! mylaptop
136
137 [html/www.debian.org]
138 # Still in CVS..urk!
139 checkout = cvs -d ':ext:joeyh@cvs.debian.org:/cvs/webwml' co -d www.debian.org webwml
140 # cvs sucks sufficiently that I prefer to run these commands by hand,
141 # and only rarely
142 update = echo "skipping cvs update (too slow)"
143 status = echo "skipping cvs status (too ugly)"
144 skip = ! mylaptop || ! full