# These will be overriden by any sections below
[DEFAULT]
# To start piping public-inbox messages into your inbox, simply
# install procmail and add the following line to your ~/.procmailrc:
#     DEFAULT=$HOME/Maildir/
# You can now read your mail with "mutt -f ~/Maildir/"
pipe = /usr/bin/procmail
# Once you've successfully piped the messages, you generally
# don't need them any more. If you set shallow = yes, then
# the repository will be configured as "shallow" and all succesffully
# processed messages will be pruned from the repo.
# This will greatly reduce disk space usage, especially on large archives.
# You can always get any number of them back, e.g. by running:
# git fetch _grokmirror master --deepen 100
shallow = yes
# You can use ~/ for paths in your home dir, or omit for no log
#log = ~/pi-piper.log
# Can be "info" or "debug". Note, that debug will have message bodies as well.
#loglevel = info

# Overrides for any defaults. You may not need any if all you want is to pipe all mirrored
# public-inboxes to procmail.
# Naming:
# We will perform simple shell-style globbing using the following rule:
# /{section}/git/*.git,
# so, for a section that matches /alsa-devel/git/0.git, name it "alsa-devel"
[alsa-devel]
# Use a different config file for this one
pipe = /usr/bin/procmail /path/to/some/other/procmailrc

[lkml]
# Setting pipe = None allows ignoring this particular list
pipe = None