tests/test-notify.out
author Martin Geisler <mg@lazybytes.net>
Sun, 13 Dec 2009 23:49:53 +0100
changeset 10065 a1ae0ed78d1a
parent 9820 0b999aec64e8
child 10112 703db37d186b
permissions -rw-r--r--
minirst: improve layout of field lists Before, we used the padding following the key to compute where to wrap the text. Long keys would thus give a big indentation. It also required careful alignment of the source text, making it cumbersome to items to the list. We now compute the maximum key length and use that for all items in the list. We also put a cap on the indentation: keys longer than 10 characters are put on their own line. This is similar to how rst2html handles large keys: it uses 14 as the cutoff point, but I felt that 10 was better for monospaced text in the console.

notify extension - hooks for sending email notifications at commit/push time

Subscriptions can be managed through a hgrc file. Default mode is to print
messages to stdout, for testing and configuring.

To use, configure the notify extension and enable it in hgrc like this:

  [extensions]
  hgext.notify =

  [hooks]
  # one email for each incoming changeset
  incoming.notify = python:hgext.notify.hook
  # batch emails when many changesets incoming at one time
  changegroup.notify = python:hgext.notify.hook

  [notify]
  # config items go here

Required configuration items:

  config = /path/to/file # file containing subscriptions

Optional configuration items:

  test = True            # print messages to stdout for testing
  strip = 3              # number of slashes to strip for url paths
  domain = example.com   # domain to use if committer missing domain
  style = ...            # style file to use when formatting email
  template = ...         # template to use when formatting email
  incoming = ...         # template to use when run as incoming hook
  changegroup = ...      # template when run as changegroup hook
  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)
  maxsubject = 67        # truncate subject line longer than this
  diffstat = True        # add a diffstat before the diff content
  sources = serve        # notify if source of incoming changes in this list
                         # (serve == ssh or http, push, pull, bundle)
  merge = False          # send notification for merges (default True)
  [email]
  from = user@host.com   # email address to send as if none given
  [web]
  baseurl = http://hgserver/... # root of hg web site for browsing commits

The notify config file has same format as a regular hgrc file. It has two
sections so you can express subscriptions in whatever way is handier for you.

  [usersubs]
  # key is subscriber email, value is ","-separated list of glob patterns
  user@host = pattern

  [reposubs]
  # key is glob pattern, value is ","-separated list of subscriber emails
  pattern = user@host

Glob patterns are matched against path to repository root.

If you like, you can put notify config file in repository that users can push
changes to, they can manage their own subscriptions.

no commands defined
% commit
adding a
% clone
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% commit
% pull (minimal config)
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Date:
Subject: changeset in test-notify/b: b
From: test
X-Hg-Notification: changeset 0647d048b600
Message-Id:
To: baz, foo@bar

changeset 0647d048b600 in test-notify/b
details: test-notify/b?cmd=changeset;node=0647d048b600
description: b

diffs (6 lines):

diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a	Thu Jan 01 00:00:00 1970 +0000
+++ b/a	Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
 a
+a
(run 'hg update' to get a working copy)
% fail for config file is missing
rolling back last transaction
pull failed
% pull
rolling back last transaction
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date:
Subject: b
From: test@test.com
X-Hg-Notification: changeset 0647d048b600
Message-Id:
To: baz@test.com, foo@bar

changeset 0647d048b600
description:
	b
diffs (6 lines):

diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a	Thu Jan 01 00:00:00 1970 +0000
+++ b/a	Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
 a
+a
(run 'hg update' to get a working copy)
% pull
rolling back last transaction
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date:
Subject: b
From: test@test.com
X-Hg-Notification: changeset 0647d048b600
Message-Id:
To: baz@test.com, foo@bar

changeset 0647d048b600
description:
	b
diffstat:

 a |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (6 lines):

diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a	Thu Jan 01 00:00:00 1970 +0000
+++ b/a	Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
 a
+a
(run 'hg update' to get a working copy)
% test merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 0 changes to 0 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date:
Subject: adda2
From: test@test.com
X-Hg-Notification: changeset 0a184ce6067f
Message-Id:
To: baz@test.com, foo@bar

changeset 0a184ce6067f
description:
	adda2
diffstat:

 a |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (6 lines):

diff -r cb9a9f314b8b -r 0a184ce6067f a
--- a/a	Thu Jan 01 00:00:00 1970 +0000
+++ b/a	Thu Jan 01 00:00:02 1970 +0000
@@ -1,1 +1,2 @@
 a
+a
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date:
Subject: merge
From: test@test.com
X-Hg-Notification: changeset 22c88b85aa27
Message-Id:
To: baz@test.com, foo@bar

changeset 22c88b85aa27
description:
	merge
(run 'hg update' to get a working copy)