author | Matt Mackall <mpm@selenic.com> |
Sat, 09 Oct 2010 14:52:58 -0500 | |
changeset 12663 | 8269af351a64 |
parent 12646 | 624859bf4314 |
child 13225 | e3bf16703e26 |
permissions | -rw-r--r-- |
3740
aef384dbc731
add test for the notify extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
1 |
|
12473 | 2 |
$ cat <<EOF >> $HGRCPATH |
3 |
> [extensions] |
|
4 |
> notify= |
|
5 |
> |
|
6 |
> [hooks] |
|
7 |
> incoming.notify = python:hgext.notify.hook |
|
8 |
> |
|
9 |
> [notify] |
|
10 |
> sources = pull |
|
11 |
> diffstat = False |
|
12 |
> |
|
13 |
> [usersubs] |
|
14 |
> foo@bar = * |
|
15 |
> |
|
16 |
> [reposubs] |
|
17 |
> * = baz |
|
18 |
> EOF |
|
19 |
$ hg help notify |
|
20 |
notify extension - hooks for sending email notifications at commit/push time |
|
21 |
||
22 |
Subscriptions can be managed through a hgrc file. Default mode is to print |
|
23 |
messages to stdout, for testing and configuring. |
|
24 |
||
25 |
To use, configure the notify extension and enable it in hgrc like this: |
|
26 |
||
27 |
[extensions] |
|
28 |
notify = |
|
29 |
||
30 |
[hooks] |
|
31 |
# one email for each incoming changeset |
|
32 |
incoming.notify = python:hgext.notify.hook |
|
33 |
# batch emails when many changesets incoming at one time |
|
34 |
changegroup.notify = python:hgext.notify.hook |
|
35 |
||
36 |
[notify] |
|
37 |
# config items go here |
|
38 |
||
39 |
Required configuration items: |
|
40 |
||
41 |
config = /path/to/file # file containing subscriptions |
|
42 |
||
43 |
Optional configuration items: |
|
44 |
||
45 |
test = True # print messages to stdout for testing |
|
46 |
strip = 3 # number of slashes to strip for url paths |
|
47 |
domain = example.com # domain to use if committer missing domain |
|
48 |
style = ... # style file to use when formatting email |
|
49 |
template = ... # template to use when formatting email |
|
50 |
incoming = ... # template to use when run as incoming hook |
|
51 |
changegroup = ... # template when run as changegroup hook |
|
52 |
maxdiff = 300 # max lines of diffs to include (0=none, -1=all) |
|
53 |
maxsubject = 67 # truncate subject line longer than this |
|
54 |
diffstat = True # add a diffstat before the diff content |
|
55 |
sources = serve # notify if source of incoming changes in this list |
|
56 |
# (serve == ssh or http, push, pull, bundle) |
|
57 |
merge = False # send notification for merges (default True) |
|
58 |
[email] |
|
59 |
from = user@host.com # email address to send as if none given |
|
60 |
[web] |
|
61 |
baseurl = http://hgserver/... # root of hg web site for browsing commits |
|
62 |
||
63 |
The notify config file has same format as a regular hgrc file. It has two |
|
64 |
sections so you can express subscriptions in whatever way is handier for you. |
|
65 |
||
66 |
[usersubs] |
|
67 |
# key is subscriber email, value is ","-separated list of glob patterns |
|
68 |
user@host = pattern |
|
69 |
||
70 |
[reposubs] |
|
71 |
# key is glob pattern, value is ","-separated list of subscriber emails |
|
72 |
pattern = user@host |
|
73 |
||
74 |
Glob patterns are matched against path to repository root. |
|
75 |
||
76 |
If you like, you can put notify config file in repository that users can push |
|
77 |
changes to, they can manage their own subscriptions. |
|
78 |
||
79 |
no commands defined |
|
80 |
$ hg init a |
|
81 |
$ echo a > a/a |
|
3740
aef384dbc731
add test for the notify extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
82 |
|
12473 | 83 |
commit |
84 |
||
85 |
$ hg --cwd a commit -Ama -d '0 0' |
|
86 |
adding a |
|
87 |
||
88 |
||
89 |
clone |
|
90 |
||
91 |
$ hg --traceback clone a b |
|
92 |
updating to branch default |
|
93 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
94 |
$ echo a >> a/a |
|
95 |
||
96 |
commit |
|
97 |
||
98 |
$ hg --traceback --cwd a commit -Amb -d '1 0' |
|
99 |
||
100 |
on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line |
|
101 |
||
102 |
$ cat <<EOF >> $HGRCPATH |
|
103 |
> [notify] |
|
104 |
> maxsubject = 200 |
|
105 |
> EOF |
|
106 |
||
107 |
the python call below wraps continuation lines, which appear on Mac OS X 10.5 because |
|
108 |
of the very long subject line |
|
109 |
pull (minimal config) |
|
6359
25e74cd3f023
test-notify: make it pass on Mac OS X 10.5
Florent Guillaume <fg@nuxeo.com>
parents:
4517
diff
changeset
|
110 |
|
12473 | 111 |
$ hg --traceback --cwd b pull ../a | \ |
12646
624859bf4314
test-notify: fix fix for line continuation in long mail header lines
Mads Kiilerich <mads@kiilerich.com>
parents:
12644
diff
changeset
|
112 |
> python -c 'import sys,re; print re.sub("\n[\t ]", " ", sys.stdin.read()),' |
12473 | 113 |
pulling from ../a |
114 |
searching for changes |
|
115 |
adding changesets |
|
116 |
adding manifests |
|
117 |
adding file changes |
|
118 |
added 1 changesets with 1 changes to 1 files |
|
119 |
Content-Type: text/plain; charset="us-ascii" |
|
120 |
MIME-Version: 1.0 |
|
121 |
Content-Transfer-Encoding: 7bit |
|
122 |
Date: * (glob) |
|
12640
6cc4b14fb76b
tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents:
12473
diff
changeset
|
123 |
Subject: changeset in $TESTTMP/b: b |
12473 | 124 |
From: test |
125 |
X-Hg-Notification: changeset 0647d048b600 |
|
126 |
Message-Id: <*> (glob) |
|
127 |
To: baz, foo@bar |
|
128 |
||
12640
6cc4b14fb76b
tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents:
12473
diff
changeset
|
129 |
changeset 0647d048b600 in $TESTTMP/b |
6cc4b14fb76b
tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents:
12473
diff
changeset
|
130 |
details: $TESTTMP/b?cmd=changeset;node=0647d048b600 |
12473 | 131 |
description: b |
132 |
||
133 |
diffs (6 lines): |
|
134 |
||
135 |
diff -r cb9a9f314b8b -r 0647d048b600 a |
|
136 |
--- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
137 |
+++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
12646
624859bf4314
test-notify: fix fix for line continuation in long mail header lines
Mads Kiilerich <mads@kiilerich.com>
parents:
12644
diff
changeset
|
138 |
@@ -1,1 +1,2 @@ a |
12473 | 139 |
+a |
140 |
(run 'hg update' to get a working copy) |
|
141 |
$ cat <<EOF >> $HGRCPATH |
|
142 |
> [notify] |
|
12642
bb35840e965c
tests: remove the last traces of $HGTMP
Mads Kiilerich <mads@kiilerich.com>
parents:
12640
diff
changeset
|
143 |
> config = `pwd`/.notify.conf |
12473 | 144 |
> domain = test.com |
12644
0490d2223882
test-notify: stabilize output
Mads Kiilerich <mads@kiilerich.com>
parents:
12642
diff
changeset
|
145 |
> strip = 42 |
12473 | 146 |
> template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip} |
147 |
> |
|
148 |
> [web] |
|
149 |
> baseurl = http://test/ |
|
150 |
> EOF |
|
4094
fbf0e9acfd83
notify: don't try to fix addresses if notify.domain is not set
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4009
diff
changeset
|
151 |
|
12473 | 152 |
fail for config file is missing |
4094
fbf0e9acfd83
notify: don't try to fix addresses if notify.domain is not set
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4009
diff
changeset
|
153 |
|
12473 | 154 |
$ hg --cwd b rollback |
155 |
rolling back to revision 0 (undo pull) |
|
156 |
$ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed |
|
157 |
pull failed |
|
12642
bb35840e965c
tests: remove the last traces of $HGTMP
Mads Kiilerich <mads@kiilerich.com>
parents:
12640
diff
changeset
|
158 |
$ touch ".notify.conf" |
12473 | 159 |
|
160 |
pull |
|
4094
fbf0e9acfd83
notify: don't try to fix addresses if notify.domain is not set
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4009
diff
changeset
|
161 |
|
12473 | 162 |
$ hg --cwd b rollback |
163 |
rolling back to revision 0 (undo pull) |
|
164 |
$ hg --traceback --cwd b pull ../a | \ |
|
165 |
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
166 |
pulling from ../a |
|
167 |
searching for changes |
|
168 |
adding changesets |
|
169 |
adding manifests |
|
170 |
adding file changes |
|
171 |
added 1 changesets with 1 changes to 1 files |
|
172 |
Content-Type: text/plain; charset="us-ascii" |
|
173 |
MIME-Version: 1.0 |
|
174 |
Content-Transfer-Encoding: 7bit |
|
175 |
X-Test: foo |
|
176 |
Date: * (glob) |
|
177 |
Subject: b |
|
178 |
From: test@test.com |
|
179 |
X-Hg-Notification: changeset 0647d048b600 |
|
180 |
Message-Id: <*> (glob) |
|
181 |
To: baz@test.com, foo@bar |
|
182 |
||
12644
0490d2223882
test-notify: stabilize output
Mads Kiilerich <mads@kiilerich.com>
parents:
12642
diff
changeset
|
183 |
changeset 0647d048b600 in b |
12473 | 184 |
description: b |
185 |
diffs (6 lines): |
|
186 |
||
187 |
diff -r cb9a9f314b8b -r 0647d048b600 a |
|
188 |
--- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
189 |
+++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
190 |
@@ -1,1 +1,2 @@ |
|
191 |
a |
|
192 |
+a |
|
193 |
(run 'hg update' to get a working copy) |
|
4517
5371a213b0f4
ui: make readsections() abort when configuration cannot be read.
Patrick Mezard <pmezard@gmail.com>
parents:
4479
diff
changeset
|
194 |
|
12473 | 195 |
$ cat << EOF >> $HGRCPATH |
196 |
> [hooks] |
|
197 |
> incoming.notify = python:hgext.notify.hook |
|
198 |
> |
|
199 |
> [notify] |
|
200 |
> sources = pull |
|
201 |
> diffstat = True |
|
202 |
> EOF |
|
203 |
||
204 |
pull |
|
4094
fbf0e9acfd83
notify: don't try to fix addresses if notify.domain is not set
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4009
diff
changeset
|
205 |
|
12473 | 206 |
$ hg --cwd b rollback |
207 |
rolling back to revision 0 (undo pull) |
|
208 |
$ hg --traceback --cwd b pull ../a | \ |
|
209 |
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
210 |
pulling from ../a |
|
211 |
searching for changes |
|
212 |
adding changesets |
|
213 |
adding manifests |
|
214 |
adding file changes |
|
215 |
added 1 changesets with 1 changes to 1 files |
|
216 |
Content-Type: text/plain; charset="us-ascii" |
|
217 |
MIME-Version: 1.0 |
|
218 |
Content-Transfer-Encoding: 7bit |
|
219 |
X-Test: foo |
|
220 |
Date: * (glob) |
|
221 |
Subject: b |
|
222 |
From: test@test.com |
|
223 |
X-Hg-Notification: changeset 0647d048b600 |
|
224 |
Message-Id: <*> (glob) |
|
225 |
To: baz@test.com, foo@bar |
|
226 |
||
12644
0490d2223882
test-notify: stabilize output
Mads Kiilerich <mads@kiilerich.com>
parents:
12642
diff
changeset
|
227 |
changeset 0647d048b600 in b |
12473 | 228 |
description: b |
229 |
diffstat: |
|
230 |
||
231 |
a | 1 + |
|
232 |
1 files changed, 1 insertions(+), 0 deletions(-) |
|
233 |
||
234 |
diffs (6 lines): |
|
235 |
||
236 |
diff -r cb9a9f314b8b -r 0647d048b600 a |
|
237 |
--- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
238 |
+++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
239 |
@@ -1,1 +1,2 @@ |
|
240 |
a |
|
241 |
+a |
|
242 |
(run 'hg update' to get a working copy) |
|
7105
31837416ef4d
tests: add some testing for patch.diffstat()
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6359
diff
changeset
|
243 |
|
12473 | 244 |
test merge |
7105
31837416ef4d
tests: add some testing for patch.diffstat()
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6359
diff
changeset
|
245 |
|
12473 | 246 |
$ cd a |
247 |
$ hg up -C 0 |
|
248 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
249 |
$ echo a >> a |
|
250 |
$ hg ci -Am adda2 -d '2 0' |
|
251 |
created new head |
|
252 |
$ hg merge |
|
253 |
0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
254 |
(branch merge, don't forget to commit) |
|
255 |
$ hg ci -m merge -d '3 0' |
|
256 |
$ cd .. |
|
257 |
$ hg --traceback --cwd b pull ../a | \ |
|
258 |
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
259 |
pulling from ../a |
|
260 |
searching for changes |
|
261 |
adding changesets |
|
262 |
adding manifests |
|
263 |
adding file changes |
|
264 |
added 2 changesets with 0 changes to 0 files |
|
265 |
Content-Type: text/plain; charset="us-ascii" |
|
266 |
MIME-Version: 1.0 |
|
267 |
Content-Transfer-Encoding: 7bit |
|
268 |
X-Test: foo |
|
269 |
Date: * (glob) |
|
270 |
Subject: adda2 |
|
271 |
From: test@test.com |
|
272 |
X-Hg-Notification: changeset 0a184ce6067f |
|
273 |
Message-Id: <*> (glob) |
|
274 |
To: baz@test.com, foo@bar |
|
275 |
||
12644
0490d2223882
test-notify: stabilize output
Mads Kiilerich <mads@kiilerich.com>
parents:
12642
diff
changeset
|
276 |
changeset 0a184ce6067f in b |
12473 | 277 |
description: adda2 |
278 |
diffstat: |
|
279 |
||
280 |
a | 1 + |
|
281 |
1 files changed, 1 insertions(+), 0 deletions(-) |
|
282 |
||
283 |
diffs (6 lines): |
|
284 |
||
285 |
diff -r cb9a9f314b8b -r 0a184ce6067f a |
|
286 |
--- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
287 |
+++ b/a Thu Jan 01 00:00:02 1970 +0000 |
|
288 |
@@ -1,1 +1,2 @@ |
|
289 |
a |
|
290 |
+a |
|
291 |
Content-Type: text/plain; charset="us-ascii" |
|
292 |
MIME-Version: 1.0 |
|
293 |
Content-Transfer-Encoding: 7bit |
|
294 |
X-Test: foo |
|
295 |
Date: * (glob) |
|
296 |
Subject: merge |
|
297 |
From: test@test.com |
|
298 |
X-Hg-Notification: changeset 22c88b85aa27 |
|
299 |
Message-Id: <*> (glob) |
|
300 |
To: baz@test.com, foo@bar |
|
301 |
||
12644
0490d2223882
test-notify: stabilize output
Mads Kiilerich <mads@kiilerich.com>
parents:
12642
diff
changeset
|
302 |
changeset 22c88b85aa27 in b |
12473 | 303 |
description: merge |
304 |
(run 'hg update' to get a working copy) |