hgext/notify.py
changeset 9105 6188f2cc4a37
parent 9104 c9c5aa12a46e
child 9136 31177742f54a
equal deleted inserted replaced
9104:c9c5aa12a46e 9105:6188f2cc4a37
    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