Configuration
The config file: optional TOML, in $XDG_CONFIG_HOME/patchtrack/config.toml.
--config FILE names another. With authors and trees in it, the daily
round needs no arguments: patchtrack sync && patchtrack check --fetch &&
patchtrack list. patchtrack config shows the file in use and what it
sets. Command-line options override the file, and the file overrides the
built-in defaults. An unknown section or key, or a value of the wrong
type, is an error, so a typo cannot silently do nothing.
Every table, with its defaults:
[sync]
authors = ["you@example.org"] # whose patches (-a on the command line replaces this)
lists = ["all"] # inboxes to search, e.g. ["linux-usb", "u-boot"]
since = "3.months.ago" # the window of a first sync
lore = "https://lore.kernel.org" # the archive
window_days = 30 # search this many days at a time
refresh_days = 7 # refetch open series not fetched for this long
[[trees]] # one table per tree `check` looks in
name = "mainline"
repo = "~/linux"
url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
branch = "master" # or: ref = "origin/master", without url
role = "mainline" # maintainer (default), next or mainline
[sources] # your own mail, read by `sync` and `import`
maildirs = ["~/Mail/INBOX", "~/Mail/Sent"] # Maildirs, or directories of .eml files
mboxes = ["~/mail/sent.mbox"]
[b4] # where `branches` finds your b4 prep branches
repos = ["~/linux"]
prefix = "b4/"
[nudge] # when `nudge` suggests a ping or a RESEND
ping_days = 7
resend_days = 14
merge_window = true # with a mainline tree: hold pings until -rc1
[[profiles]] # how a project says "approved" and "landed"
name = "myproject" # "sourceware" is built in; the same name replaces it
recipients = ["*@lists.example.org"] # globs on the posting's To:/Cc:
approvals = ['^(ok|lgtm)([.!]|$)'] # regexes on lines that start a paragraph
landed = ['^(pushed|committed)'] # "it is in", counted from the author too
[bots]
builtin = true # keep the built-in rule (*bot*, lkp@intel.com, ...)
addresses = ["ci@example.org"] # these senders are bots
patterns = ["*@ci.example.org"] # fnmatch globs on the address
humans = ["abbott@example.org"] # never bots, whatever matched
bodies = ["^My bot found errors"] # regexes on the unquoted body, for
# people who also send bot mail
Trees in the config are written to the store on every run, so the config
is their source of truth: tree rm refuses them. Trees added with
tree add sit beside them.