Mercurial > hg > mercurial-crew-with-dirclash
annotate hgext/notify.py @ 2323:c58a403aa830
setup.py: install packagescan before any mercurial modules is imported
Further the installation of packagescan over demandload is moved to the
packagescan module.
I added as well few more comments in the packagescan module to avoid
the wrong use of package scan in the future.
Reason:
mercurial.packagescan acts as fake mercurial.demandload during a py2exe
run. Unfortunatly the import of mercurial.version in setup.py is done
before mercurial.packagescan is installed. This results in few imports
without mercurial.packagescan in charge and therefore not all dependend
modules are detected when running mercurial.packagescan.getmodules
later e.g. winerror is missed.
author | Volker Kleinfeld <Volker.Kleinfeld@gmx.de> |
---|---|
date | Fri, 19 May 2006 08:54:28 -0700 |
parents | 6e8e3dd7976e |
children | d0ba2f6b9d97 |
rev | line source |
---|---|
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
1 # notify.py - email notifications for mercurial |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
2 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
3 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
4 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
5 # This software may be used and distributed according to the terms |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
6 # of the GNU General Public License, incorporated herein by reference. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
7 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
8 # hook extension to email notifications to people when changesets are |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
9 # committed to a repo they subscribe to. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
10 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
11 # default mode is to print messages to stdout, for testing and |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
12 # configuring. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
13 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
14 # to use, configure notify extension and enable in hgrc like this: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
15 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
16 # [extensions] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
17 # hgext.notify = |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
18 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
19 # [hooks] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
20 # # one email for each incoming changeset |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
21 # incoming.notify = python:hgext.notify.hook |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
22 # # batch emails when many changesets incoming at one time |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
23 # changegroup.notify = python:hgext.notify.hook |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
24 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
25 # [notify] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
26 # # config items go in here |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
27 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
28 # config items: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
29 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
30 # REQUIRED: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
31 # config = /path/to/file # file containing subscriptions |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
32 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
33 # OPTIONAL: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
34 # test = True # print messages to stdout for testing |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
35 # strip = 3 # number of slashes to strip for url paths |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
36 # domain = example.com # domain to use if committer missing domain |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
37 # style = ... # style file to use when formatting email |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
38 # template = ... # template to use when formatting email |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
39 # incoming = ... # template to use when run as incoming hook |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
40 # changegroup = ... # template when run as changegroup hook |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
41 # maxdiff = 300 # max lines of diffs to include (0=none, -1=all) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
42 # maxsubject = 67 # truncate subject line longer than this |
2230
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
43 # sources = serve # notify if source of incoming changes in this list |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
44 # # (serve == ssh or http, push, pull, bundle) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
45 # [email] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
46 # from = user@host.com # email address to send as if none given |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
47 # [web] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
48 # baseurl = http://hgserver/... # root of hg web site for browsing commits |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
49 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
50 # notify config file has same format as regular hgrc. it has two |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
51 # sections so you can express subscriptions in whatever way is handier |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
52 # for you. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
53 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
54 # [usersubs] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
55 # # key is subscriber email, value is ","-separated list of glob patterns |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
56 # user@host = pattern |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
57 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
58 # [reposubs] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
59 # # key is glob pattern, value is ","-separated list of subscriber emails |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
60 # pattern = user@host |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
61 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
62 # glob patterns are matched against path to repo root. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
63 # |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
64 # if you like, you can put notify config file in repo that users can |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
65 # push changes to, they can manage their own subscriptions. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
66 |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
67 from mercurial.demandload import * |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
68 from mercurial.i18n import gettext as _ |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
69 from mercurial.node import * |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
70 demandload(globals(), 'email.Parser mercurial:commands,templater,util') |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
71 demandload(globals(), 'fnmatch socket time') |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
72 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
73 # template for single changeset can include email headers. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
74 single_template = ''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
75 Subject: changeset in {webroot}: {desc|firstline|strip} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
76 From: {author} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
77 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
78 changeset {node|short} in {root} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
79 details: {baseurl}{webroot}?cmd=changeset;node={node|short} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
80 description: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
81 \t{desc|tabindent|strip} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
82 '''.lstrip() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
83 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
84 # template for multiple changesets should not contain email headers, |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
85 # because only first set of headers will be used and result will look |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
86 # strange. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
87 multiple_template = ''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
88 changeset {node|short} in {root} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
89 details: {baseurl}{webroot}?cmd=changeset;node={node|short} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
90 summary: {desc|firstline} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
91 ''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
92 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
93 deftemplates = { |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
94 'changegroup': multiple_template, |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
95 } |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
96 |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
97 class notifier(object): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
98 '''email notification class.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
99 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
100 def __init__(self, ui, repo, hooktype): |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
101 self.ui = ui |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
102 self.ui.readconfig(self.ui.config('notify', 'config')) |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
103 self.repo = repo |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
104 self.stripcount = int(self.ui.config('notify', 'strip', 0)) |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
105 self.root = self.strip(self.repo.root) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
106 self.domain = self.ui.config('notify', 'domain') |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
107 self.sio = templater.stringio() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
108 self.subs = self.subscribers() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
109 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
110 mapfile = self.ui.config('notify', 'style') |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
111 template = (self.ui.config('notify', hooktype) or |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
112 self.ui.config('notify', 'template')) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
113 self.t = templater.changeset_templater(self.ui, self.repo, mapfile, |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
114 self.sio) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
115 if not mapfile and not template: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
116 template = deftemplates.get(hooktype) or single_template |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
117 if template: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
118 template = templater.parsestring(template, quoted=False) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
119 self.t.use_template(template) |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
120 |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
121 def strip(self, path): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
122 '''strip leading slashes from local path, turn into web-safe path.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
123 |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
124 path = util.pconvert(path) |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
125 count = self.stripcount |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
126 while path and count >= 0: |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
127 c = path.find('/') |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
128 if c == -1: |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
129 break |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
130 path = path[c+1:] |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
131 count -= 1 |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
132 return path |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
133 |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
134 def fixmail(self, addr): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
135 '''try to clean up email addresses.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
136 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
137 addr = templater.email(addr.strip()) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
138 a = addr.find('@localhost') |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
139 if a != -1: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
140 addr = addr[:a] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
141 if '@' not in addr: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
142 return addr + '@' + self.domain |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
143 return addr |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
144 |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
145 def subscribers(self): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
146 '''return list of email addresses of subscribers to this repo.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
147 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
148 subs = {} |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
149 for user, pats in self.ui.configitems('usersubs'): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
150 for pat in pats.split(','): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
151 if fnmatch.fnmatch(self.repo.root, pat.strip()): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
152 subs[self.fixmail(user)] = 1 |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
153 for pat, users in self.ui.configitems('reposubs'): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
154 if fnmatch.fnmatch(self.repo.root, pat): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
155 for user in users.split(','): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
156 subs[self.fixmail(user)] = 1 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
157 subs = subs.keys() |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
158 subs.sort() |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
159 return subs |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
160 |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
161 def url(self, path=None): |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
162 return self.ui.config('web', 'baseurl') + (path or self.root) |
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
163 |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
164 def node(self, node): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
165 '''format one changeset.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
166 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
167 self.t.show(changenode=node, changes=self.repo.changelog.read(node), |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
168 baseurl=self.ui.config('web', 'baseurl'), |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
169 root=self.repo.root, |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
170 webroot=self.root) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
171 |
2230
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
172 def skipsource(self, source): |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
173 '''true if incoming changes from this source should be skipped.''' |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
174 ok_sources = self.ui.config('notify', 'sources', 'serve').split() |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
175 return source not in ok_sources |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
176 |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
177 def send(self, node, count): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
178 '''send message.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
179 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
180 p = email.Parser.Parser() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
181 self.sio.seek(0) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
182 msg = p.parse(self.sio) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
183 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
184 def fix_subject(): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
185 '''try to make subject line exist and be useful.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
186 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
187 subject = msg['Subject'] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
188 if not subject: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
189 if count > 1: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
190 subject = _('%s: %d new changesets') % (self.root, count) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
191 else: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
192 changes = self.repo.changelog.read(node) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
193 s = changes[4].lstrip().split('\n', 1)[0].rstrip() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
194 subject = '%s: %s' % (self.root, s) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
195 maxsubject = int(self.ui.config('notify', 'maxsubject', 67)) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
196 if maxsubject and len(subject) > maxsubject: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
197 subject = subject[:maxsubject-3] + '...' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
198 del msg['Subject'] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
199 msg['Subject'] = subject |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
200 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
201 def fix_sender(): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
202 '''try to make message have proper sender.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
203 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
204 sender = msg['From'] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
205 if not sender: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
206 sender = self.ui.config('email', 'from') or self.ui.username() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
207 if '@' not in sender or '@localhost' in sender: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
208 sender = self.fixmail(sender) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
209 del msg['From'] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
210 msg['From'] = sender |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
211 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
212 fix_subject() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
213 fix_sender() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
214 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
215 msg['X-Hg-Notification'] = 'changeset ' + short(node) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
216 if not msg['Message-Id']: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
217 msg['Message-Id'] = ('<hg.%s.%s.%s@%s>' % |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
218 (short(node), int(time.time()), |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
219 hash(self.repo.root), socket.getfqdn())) |
2230
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
220 msg['To'] = ', '.join(self.subs) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
221 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
222 msgtext = msg.as_string(0) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
223 if self.ui.configbool('notify', 'test', True): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
224 self.ui.write(msgtext) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
225 if not msgtext.endswith('\n'): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
226 self.ui.write('\n') |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
227 else: |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
228 mail = self.ui.sendmail() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
229 mail.sendmail(templater.email(msg['From']), self.subs, msgtext) |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
230 |
2296
6e8e3dd7976e
notify changeset diff should be against current node instead of tip
"Aurelien Jacobs <aurel@gnuage.org>"
parents:
2230
diff
changeset
|
231 def diff(self, node, ref): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
232 maxdiff = int(self.ui.config('notify', 'maxdiff', 300)) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
233 if maxdiff == 0: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
234 return |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
235 fp = templater.stringio() |
2224
e8f47dfb70f4
notify extension: generate right number of diffs
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2221
diff
changeset
|
236 prev = self.repo.changelog.parents(node)[0] |
2296
6e8e3dd7976e
notify changeset diff should be against current node instead of tip
"Aurelien Jacobs <aurel@gnuage.org>"
parents:
2230
diff
changeset
|
237 commands.dodiff(fp, self.ui, self.repo, prev, ref) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
238 difflines = fp.getvalue().splitlines(1) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
239 if maxdiff > 0 and len(difflines) > maxdiff: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
240 self.sio.write(_('\ndiffs (truncated from %d to %d lines):\n\n') % |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
241 (len(difflines), maxdiff)) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
242 difflines = difflines[:maxdiff] |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
243 elif difflines: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
244 self.sio.write(_('\ndiffs (%d lines):\n\n') % len(difflines)) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
245 self.sio.write(*difflines) |
2201
f15056b29472
patch queue: notify.patch
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
246 |
2230
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
247 def hook(ui, repo, hooktype, node=None, source=None, **kwargs): |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
248 '''send email notifications to interested subscribers. |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
249 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
250 if used as changegroup hook, send one email for all changesets in |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
251 changegroup. else send one email per changeset.''' |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
252 n = notifier(ui, repo, hooktype) |
2230
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
253 if not n.subs or n.skipsource(source): |
332950340788
localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2225
diff
changeset
|
254 return |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
255 node = bin(node) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
256 if hooktype == 'changegroup': |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
257 start = repo.changelog.rev(node) |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
258 end = repo.changelog.count() |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
259 count = end - start |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
260 for rev in xrange(start, end): |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
261 n.node(repo.changelog.node(rev)) |
2296
6e8e3dd7976e
notify changeset diff should be against current node instead of tip
"Aurelien Jacobs <aurel@gnuage.org>"
parents:
2230
diff
changeset
|
262 n.diff(node, repo.changelog.tip()) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
263 else: |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
264 count = 1 |
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
265 n.node(node) |
2296
6e8e3dd7976e
notify changeset diff should be against current node instead of tip
"Aurelien Jacobs <aurel@gnuage.org>"
parents:
2230
diff
changeset
|
266 n.diff(node, node) |
2203
9569eea1707c
add email notification hook. hook written in python.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2201
diff
changeset
|
267 n.send(node, count) |