]> git.cworth.org Git - notmuch-wiki/blob - nmbug.mdwn
nmbug: add source for report generator
[notmuch-wiki] / nmbug.mdwn
1 # Experimental Tag Sharing / Pseudo-Bug-Tracking for/with notmuch
2
3 ## Web View
4
5 There is a dump of (one view of) the nmbug [[status|nmbug/status]]. It is even more
6 experimental than everything else here, and currently manually updated.
7 It is generated by a [[python script|nmbug/report.py]].
8
9 ## Getting set up
10
11 1. Install and use notmuch version notmuch 0.9+63~gebd1adc or newer.
12
13    The nmbug script is available in contrib/nmbug
14       
15 2. The current tag repo can be obtained by
16
17       git clone --bare git://pivot.cs.unb.ca/nmbug.git $HOME/.nmbug
18
19     Check that your git is recent enough by entering
20
21       git --git-dir=$HOME/.nmbug fetch
22
23     If you get failures then you need to update your git (as well).
24
25 ## Using nmbug, simple example
26
27     # get the latest version of the tags
28     $ nmbug pull
29
30     # do some tagging; see below for conventions 
31     
32     $ notmuch tag +notmuch::patch $id
33     
34     # write the tag changes from the notmuch database
35     $ nmbug commit
36
37 ## Using nmbug, doing the same thing with more steps
38
39     # get the latest version of the tags
40     $ nmbug fetch
41
42     # Optionally inspect the fetched changes
43
44     $ nmbug status      
45      a   tags/id1/patch
46      d   tags/id2/pushed     
47     
48     # merge the fetched tags into notmuch
49     $ nmbug merge
50     
51     # observe status is clear now,
52     $ nmbug status
53
54     # make the tag changes
55     $ notmuch tag +notmuch::patch id
56
57     # double check your changes
58     $ nmbug status
59     A tags/id/patch
60     
61     # write the tag changes 
62     $ nmbug commit
63
64 ## Submitting tags.
65
66    For the moment, we are using a central repo, hosted at
67     
68         git@pivot.cs.unb.ca:pub/nmbug
69         
70    To get push access, send your public key (ideally in a gpg signed
71    email) to David Bremner.  There is a convenience command
72    
73        nmbug push
74        
75    But you will have to change your url with
76    
77        git --git-dir=$HOME/.nmbug remote set-url origin git@pivot.cs.unb.ca:pub/nmbug
78
79 ## Tagging conventions
80
81     notmuch::bug                is a bug report
82     notmuch::emacs              is a patch/bug for the emacs UI
83     notmuch::feature            provides a new feature
84     notmuch::fix                fixes a bug
85     notmuch::moreinfo           waiting for feedback from patch proposer or others
86     notmuch::obsolete           replaced by some other patch
87     notmuch::patch           
88     notmuch::portability        improves portability
89     notmuch::pushed             is pushed to master
90     notmuch::review             is a review
91     notmuch::reviewed           has been (well) reviewed
92     notmuch::test               provides a new test/or improves testing
93     notmuch::wip                is "work in progress", posted for review or comment.
94
95 ## Tracking the patch queue
96
97 I (David Bremner) use the following search (in my case as a saved
98 search in emacs).
99     
100     tag:notmuch::patch and not tag:notmuch::pushed and \
101         not tag:notmuch::obsolete and not tag:notmuch::wip \
102             and not tag:notmuch::moreinfo and not tag:notmuch::contrib
103
104 You might or might not want as many exclusions.  Another interesting
105 search is
106
107     tag:notmuch::reviewed and not tag:notmuch::pushed
108     
109     
110 ## Design notes
111
112 ### Disk format.
113
114 The tags are stored in a bare-repo, which means they are not obviously
115 visible. There is an `nmbug archive` command analogous to `git
116 archive` Tags are represented as empty files in the tree; if you extra
117 them, the tree looks something like
118
119
120     tags/878waiwi0f.wl%25james@hackervisions.org/
121     tags/878waiwi0f.wl%25james@hackervisions.org/emacs
122     tags/878waiwi0f.wl%25james@hackervisions.org/patch
123     tags/87aa8j7hqu.fsf@zancas.localnet/
124     tags/87aa8j7hqu.fsf@zancas.localnet/patch
125     tags/87aa8j7hqu.fsf@zancas.localnet/pushed
126
127 The `%25` represents hex code for a character that cannot be used directly
128 (in this case %, only because it is needed as an escape).
129
130 ### Assumptions
131
132 - Currently the parser of nmbug (like that of notmuch restore) assumes 
133   that there are no spaces in message-ids.
134     
135     
136     
137