10 Subscriptions can be managed through a hgrc file. Default mode is to print |
10 Subscriptions can be managed through a hgrc file. Default mode is to print |
11 messages to stdout, for testing and configuring. |
11 messages to stdout, for testing and configuring. |
12 |
12 |
13 To use, configure the notify extension and enable it in hgrc like this: |
13 To use, configure the notify extension and enable it in hgrc like this: |
14 |
14 |
15 [extensions] |
15 [extensions] |
16 hgext.notify = |
16 hgext.notify = |
17 |
17 |
18 [hooks] |
18 [hooks] |
19 # one email for each incoming changeset |
19 # one email for each incoming changeset |
20 incoming.notify = python:hgext.notify.hook |
20 incoming.notify = python:hgext.notify.hook |
21 # batch emails when many changesets incoming at one time |
21 # batch emails when many changesets incoming at one time |
22 changegroup.notify = python:hgext.notify.hook |
22 changegroup.notify = python:hgext.notify.hook |
23 |
23 |
24 [notify] |
24 [notify] |
25 # config items go here |
25 # config items go here |
26 |
26 |
27 Required configuration items: |
27 Required configuration items: |
28 |
28 |
29 config = /path/to/file # file containing subscriptions |
29 config = /path/to/file # file containing subscriptions |
30 |
30 |
31 Optional configuration items: |
31 Optional configuration items: |
32 |
32 |
33 test = True # print messages to stdout for testing |
33 test = True # print messages to stdout for testing |
34 strip = 3 # number of slashes to strip for url paths |
34 strip = 3 # number of slashes to strip for url paths |
35 domain = example.com # domain to use if committer missing domain |
35 domain = example.com # domain to use if committer missing domain |
36 style = ... # style file to use when formatting email |
36 style = ... # style file to use when formatting email |
37 template = ... # template to use when formatting email |
37 template = ... # template to use when formatting email |
38 incoming = ... # template to use when run as incoming hook |
38 incoming = ... # template to use when run as incoming hook |
39 changegroup = ... # template when run as changegroup hook |
39 changegroup = ... # template when run as changegroup hook |
40 maxdiff = 300 # max lines of diffs to include (0=none, -1=all) |
40 maxdiff = 300 # max lines of diffs to include (0=none, -1=all) |
41 maxsubject = 67 # truncate subject line longer than this |
41 maxsubject = 67 # truncate subject line longer than this |
42 diffstat = True # add a diffstat before the diff content |
42 diffstat = True # add a diffstat before the diff content |
43 sources = serve # notify if source of incoming changes in this list |
43 sources = serve # notify if source of incoming changes in this list |
44 # (serve == ssh or http, push, pull, bundle) |
44 # (serve == ssh or http, push, pull, bundle) |
45 [email] |
45 [email] |
46 from = user@host.com # email address to send as if none given |
46 from = user@host.com # email address to send as if none given |
47 [web] |
47 [web] |
48 baseurl = http://hgserver/... # root of hg web site for browsing commits |
48 baseurl = http://hgserver/... # root of hg web site for browsing commits |
49 |
49 |
50 The notify config file has same format as a regular hgrc file. It has two |
50 The notify config file has same format as a regular hgrc file. It has two |
51 sections so you can express subscriptions in whatever way is handier for you. |
51 sections so you can express subscriptions in whatever way is handier for you. |
52 |
52 |
53 [usersubs] |
53 [usersubs] |
54 # key is subscriber email, value is ","-separated list of glob patterns |
54 # key is subscriber email, value is ","-separated list of glob patterns |
55 user@host = pattern |
55 user@host = pattern |
56 |
56 |
57 [reposubs] |
57 [reposubs] |
58 # key is glob pattern, value is ","-separated list of subscriber emails |
58 # key is glob pattern, value is ","-separated list of subscriber emails |
59 pattern = user@host |
59 pattern = user@host |
60 |
60 |
61 Glob patterns are matched against path to repository root. |
61 Glob patterns are matched against path to repository root. |
62 |
62 |
63 If you like, you can put notify config file in repository that users can push |
63 If you like, you can put notify config file in repository that users can push |
64 changes to, they can manage their own subscriptions. |
64 changes to, they can manage their own subscriptions. |
65 ''' |
65 ''' |
66 |
66 |
67 from mercurial.i18n import _ |
67 from mercurial.i18n import _ |
68 from mercurial import patch, cmdutil, templater, util, mail |
68 from mercurial import patch, cmdutil, templater, util, mail |
69 import email.Parser, fnmatch, socket, time |
69 import email.Parser, fnmatch, socket, time |