]> git.cworth.org Git - notmuch-wiki/blob - nmbug.mdwn
nmbug: describe updated tagging conventions.
[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
8  [[python script|http://pivot.cs.unb.ca/git/?p=notmuch-scripts.git;a=blob_plain;f=scripts/nmbug-status.py]].
9
10 ## Getting set up
11
12 1. Install and use notmuch version notmuch 0.9+63~gebd1adc or newer.
13
14    The nmbug script is available in contrib/nmbug
15       
16 2. The current tag repo can be obtained by
17
18       git clone --bare git://pivot.cs.unb.ca/nmbug.git $HOME/.nmbug
19
20     Check that your git is recent enough by entering
21
22       git --git-dir=$HOME/.nmbug fetch
23
24     If you get failures then you need to update your git (as well).
25
26 ## Using nmbug, simple example
27
28     # get the latest version of the tags
29     $ nmbug pull
30
31     # do some tagging; see below for conventions 
32     
33     $ notmuch tag +notmuch::patch $id
34     
35     # write the tag changes from the notmuch database
36     $ nmbug commit
37
38 ## Using nmbug, doing the same thing with more steps
39
40     # get the latest version of the tags
41     $ nmbug fetch
42
43     # Optionally inspect the fetched changes
44
45     $ nmbug status      
46      a   tags/id1/patch
47      d   tags/id2/pushed     
48     
49     # merge the fetched tags into notmuch
50     $ nmbug merge
51     
52     # observe status is clear now,
53     $ nmbug status
54
55     # make the tag changes
56     $ notmuch tag +notmuch::patch id
57
58     # double check your changes
59     $ nmbug status
60     A tags/id/patch
61     
62     # write the tag changes 
63     $ nmbug commit
64
65 ## Submitting tags.
66
67    For the moment, we are using a central repo, hosted at
68     
69         git@pivot.cs.unb.ca:pub/nmbug
70         
71    To get push access, send your public key (ideally in a gpg signed
72    email) to David Bremner.  There is a convenience command
73    
74        nmbug push
75        
76    But you will have to change your url with
77    
78        git --git-dir=$HOME/.nmbug remote set-url origin git@pivot.cs.unb.ca:pub/nmbug
79
80 ## Tagging conventions
81
82 Note that the tag database is probably catching up to these
83 conventions.
84
85 ### Main patch tracking tags
86
87 Intially any patch should be tagged
88
89     notmuch::patch           
90
91 Patches that are for discussion, rather than proposed for master should be tagged
92
93     notmuch::wip                is "work in progress", posted for review or comment.
94
95 Most patches will be initially tagged
96
97     notmuch::needs-review       needs some (more) review
98
99 unless the are tagged
100
101     notmuch::trivial            looks harmless
102
103 Patches keep `notmuch::needs-review` until they either get enough
104 reviews, or one of the following resolutions is reached
105     
106     notmuch::obsolete           replaced by some other patch
107     notmuch::pushed             is pushed to master
108     notmuch::wontfix            for whatever reason, this patch will not 
109                                 be applied
110
111 Sometimes the process stalls, and patches get tagged
112
113     notmuch::moreinfo           waiting for feedback from patch proposer 
114                                 or others
115     
116 ### Bug tracking tag
117
118 So far we are just tagging certain messages as bug reports, meaning
119 things that "everyone" agrees should be fixed.
120
121     notmuch::bug                is a bug report
122
123 ### Optional tags
124
125 These patches are more comments and suggestions.
126
127     notmuch::emacs              is a patch/bug for the emacs UI
128     notmuch::feature            provides a new feature
129     notmuch::fix                fixes a bug
130     notmuch::portability        improves portability
131     notmuch::review             is a review
132     notmuch::test               provides a new test/or improves testing
133     notmuch::$n                 this patch should be considered for 
134                                 release $n
135
136 ## TRACKING the patch queue
137
138 I (David Bremner) use the following search (in my case as a saved
139 search in emacs).
140     
141     tag:notmuch::patch and not tag:notmuch::pushed and \
142         not tag:notmuch::obsolete and not tag:notmuch::wip \
143             and not tag:notmuch::moreinfo and not tag:notmuch::contrib
144
145 You might or might not want as many exclusions.  Another interesting
146 search is
147
148     tag:notmuch::reviewed and not tag:notmuch::pushed
149     
150     
151 ## Design notes
152
153 ### Disk format.
154
155 The tags are stored in a bare-repo, which means they are not obviously
156 visible. There is an `nmbug archive` command analogous to `git
157 archive` Tags are represented as empty files in the tree; if you extra
158 them, the tree looks something like
159
160
161     tags/878waiwi0f.wl%25james@hackervisions.org/
162     tags/878waiwi0f.wl%25james@hackervisions.org/emacs
163     tags/878waiwi0f.wl%25james@hackervisions.org/patch
164     tags/87aa8j7hqu.fsf@zancas.localnet/
165     tags/87aa8j7hqu.fsf@zancas.localnet/patch
166     tags/87aa8j7hqu.fsf@zancas.localnet/pushed
167
168 The `%25` represents hex code for a character that cannot be used directly
169 (in this case %, only because it is needed as an escape).
170
171 ### Assumptions
172
173 - Currently the parser of nmbug (like that of notmuch restore) assumes 
174   that there are no spaces in message-ids.
175     
176     
177     
178