+[[!img notmuch-logo.png alt="Notmuch logo" class="left"]]
# Experimental Tag Sharing / Pseudo-Bug-Tracking for/with notmuch
-## Getting set up
+## Web View
-1. Install and use notmuch version notmuch 0.9+63~gebd1adc or newer.
+There is a dump of (some views of) the nmbug [[status|http://nmbug.notmuchmail.org/status]].
- The nmbug script is available in contrib/nmbug
-
-2. The current tag repo can be obtained by
+## Getting started
- git clone --bare git://pivot.cs.unb.ca/nmbug.git $HOME/.nmbug
+0. Make sure that the whole [notmuch@notmuchmail.org mailing list
+ archive][archive] is available in your email database.
- Check that your git is recent enough by entering
+1. Install and use nmbug from notmuch version **0.19** or newer, and
+ either Python 2.7 or anything from the 3.x line.
- git --git-dir=$HOME/.nmbug fetch
+ The nmbug script is available in [devel/nmbug][nmbug].
- If you get failures then you need to update your git (as well).
+2. Make sure your `git version` is **1.7.4** or newer.
+
+3. Enter the following command to obtain the current tag repository:
+
+ `$ nmbug clone http://nmbug.notmuchmail.org/git/nmbug-tags.git`
## Using nmbug, simple example
# get the latest version of the tags
$ nmbug pull
- # do some tagging; see below for conventions
-
+ # do some tagging; see below for conventions
$ notmuch tag +notmuch::patch $id
-
+
# write the tag changes from the notmuch database
$ nmbug commit
# Optionally inspect the fetched changes
- $ nmbug status
+ $ nmbug status
a tags/id1/patch
- d tags/id2/pushed
-
+ d tags/id2/pushed
+
# merge the fetched tags into notmuch
$ nmbug merge
-
+
# observe status is clear now,
$ nmbug status
# double check your changes
$ nmbug status
A tags/id/patch
-
- # write the tag changes
+
+ # write the tag changes
$ nmbug commit
-## Submitting tags.
-
- For the moment, we are using a central repo, hosted at
-
- git@pivot.cs.unb.ca:pub/nmbug
-
- To get push access, send your public key (ideally in a gpg signed
- email) to David Bremner. There is a convenience command
-
- nmbug push
-
- But you will have to change your url with
-
- git --git-dir=$HOME/.nmbug remote set-url origin git@pivot.cs.unb.ca:pub/nmbug
+## Submitting tags
+
+For the moment, we are using a central repo, hosted at:
+
+ nmbug@nmbug.notmuchmail.org:nmbug-tags
+
+To get push access, send your public key (ideally in a gpg signed
+email) to David Bremner. There is a convenience command:
+
+ $ nmbug push
+
+But you will have to change your push URL with:
+
+ $ git --git-dir=$HOME/.nmbug remote set-url --push origin nmbug@nmbug.notmuchmail.org:nmbug-tags
## Tagging conventions
+_Note that the tag database is probably catching up to these
+conventions._
+
+### Main patch tracking tags
+
+Initially any patch should be tagged:
+
+ notmuch::patch
+
+Patches that are for discussion, rather than proposed for master
+should also be tagged:
+
+ notmuch::wip is "work in progress", posted for review or comment.
+
+Most patches will be initially tagged:
+
+ notmuch::needs-review needs some (more) review
+
+unless they are tagged:
+
+ notmuch::trivial looks harmless
+
+Patches keep `notmuch::needs-review` until they either get enough
+reviews, or one of the following resolutions is reached:
+
+ notmuch::obsolete replaced by some other patch
+ notmuch::pushed is pushed to master
+ notmuch::wontfix for whatever reason, this patch will not
+ be applied
+
+Sometimes the process stalls, and patches get tagged:
+
+ notmuch::moreinfo waiting for feedback from patch proposer
+ or others
+ notmuch::stale The patch no longer applies to master (or in
+ rare cases, to release)
+
+Note that these tags typically apply to whole series of patches; it
+doesn't usually make sense to apply patches later in the series before
+earlier ones. So a patch may be tagged `moreinfo` or `stale` only
+because a predecessor patch is.
+
+### Bug tracking tag
+
+So far we are just tagging certain messages as bug reports, meaning
+things that "everyone" agrees should be fixed.
+
notmuch::bug is a bug report
+ notmuch::fixed indicates that the bug is fixed in the
+ master branch
+
+### Optional tags
+
+These patches are more comments and suggestions.
+
+ notmuch::doc is a documentation patch
notmuch::emacs is a patch/bug for the emacs UI
notmuch::feature provides a new feature
notmuch::fix fixes a bug
- notmuch::moreinfo waiting for feedback from patch proposer or others
- notmuch::obsolete replaced by some other patch
- notmuch::patch
notmuch::portability improves portability
- notmuch::pushed is pushed to master
notmuch::review is a review
- notmuch::reviewed has been (well) reviewed
notmuch::test provides a new test/or improves testing
- notmuch::wip is "work in progress", posted for review or comment.
+ notmuch::$n this patch should be considered for
+ release $n
## Tracking the patch queue
I (David Bremner) use the following search (in my case as a saved
-search in emacs).
-
+search in emacs):
+
tag:notmuch::patch and not tag:notmuch::pushed and \
not tag:notmuch::obsolete and not tag:notmuch::wip \
and not tag:notmuch::moreinfo and not tag:notmuch::contrib
You might or might not want as many exclusions. Another interesting
-search is
+search is:
+
+ tag:notmuch::patch and not tag:notmuch::needs-review and not \
+ tag:notmuch::pushed and not tag:notmuch::obsolete and not \
+ tag:notmuch::wontfix and not tag:notmuch::moreinfo and not \
+ tag:notmuch::stale and not tag:notmuch::wip
+
+See the [[status|http://nmbug.notmuchmail.org/status]] page for more
+example searches.
- tag:notmuch::reviewed and not tag:notmuch::pushed
-
-
## Design notes
-### Disk format.
+### Disk format
The tags are stored in a bare-repo, which means they are not obviously
visible. There is an `nmbug archive` command analogous to `git
-archive` Tags are represented as empty files in the tree; if you extra
-them, the tree looks something like
-
+archive` Tags are represented as empty files in the tree; if you
+extract them, the tree looks something like:
tags/878waiwi0f.wl%25james@hackervisions.org/
tags/878waiwi0f.wl%25james@hackervisions.org/emacs
### Assumptions
-- Currently the parser of nmbug (like that of notmuch restore) assumes
+- Currently the parser of nmbug (like that of notmuch restore) assumes
that there are no spaces in message-ids.
-
-
-
+[archive]: http://notmuchmail.org/archives/notmuch.mbox
+[nmbug]: http://git.notmuchmail.org/git/notmuch/blob/HEAD:/devel/nmbug/nmbug