test-notify.t
748 lines
| 20.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-notify.t
|
r33684 | $ cat > $TESTTMP/filter.py <<EOF | ||
|
r33971 | > from __future__ import absolute_import, print_function | ||
> import re | ||||
> import sys | ||||
|
r33684 | > print(re.sub("\n[ \t]", " ", sys.stdin.read()), end="") | ||
> EOF | ||||
|
r12473 | |||
$ cat <<EOF >> $HGRCPATH | ||||
> [extensions] | ||||
> notify= | ||||
> | ||||
> [hooks] | ||||
> incoming.notify = python:hgext.notify.hook | ||||
> | ||||
> [notify] | ||||
> sources = pull | ||||
> diffstat = False | ||||
> | ||||
> [usersubs] | ||||
> foo@bar = * | ||||
> | ||||
> [reposubs] | ||||
> * = baz | ||||
> EOF | ||||
$ hg help notify | ||||
|
r14940 | notify extension - hooks for sending email push notifications | ||
|
r12473 | |||
|
r16950 | This extension implements hooks to send email notifications when changesets | ||
are sent from or received by the local repository. | ||||
|
r12473 | |||
|
r27729 | First, enable the extension as explained in 'hg help extensions', and register | ||
|
r16950 | the hook you want to run. "incoming" and "changegroup" hooks are run when | ||
changesets are received, while "outgoing" hooks are for changesets sent to | ||||
another repository: | ||||
|
r12473 | |||
[hooks] | ||||
# one email for each incoming changeset | ||||
incoming.notify = python:hgext.notify.hook | ||||
|
r14940 | # one email for all incoming changesets | ||
|
r12473 | changegroup.notify = python:hgext.notify.hook | ||
|
r14940 | |||
# one email for all outgoing changesets | ||||
|
r14617 | outgoing.notify = python:hgext.notify.hook | ||
|
r12473 | |||
|
r16950 | This registers the hooks. To enable notification, subscribers must be assigned | ||
to repositories. The "[usersubs]" section maps multiple repositories to a | ||||
given recipient. The "[reposubs]" section maps multiple recipients to a single | ||||
repository: | ||||
|
r12473 | |||
[usersubs] | ||||
|
r17754 | # key is subscriber email, value is a comma-separated list of repo patterns | ||
|
r12473 | user@host = pattern | ||
[reposubs] | ||||
|
r17754 | # key is repo pattern, value is a comma-separated list of subscriber emails | ||
|
r12473 | pattern = user@host | ||
|
r17754 | A "pattern" is a "glob" matching the absolute path to a repository, optionally | ||
combined with a revset expression. A revset expression, if present, is | ||||
separated from the glob by a hash. Example: | ||||
[reposubs] | ||||
*/widgets#branch(release) = qa-team@example.com | ||||
This sends to "qa-team@example.com" whenever a changeset on the "release" | ||||
branch triggers a notification in any repository ending in "widgets". | ||||
|
r16950 | |||
In order to place them under direct user management, "[usersubs]" and | ||||
"[reposubs]" sections may be placed in a separate "hgrc" file and incorporated | ||||
by reference: | ||||
|
r14940 | |||
[notify] | ||||
config = /path/to/subscriptionsfile | ||||
|
r16950 | Notifications will not be sent until the "notify.test" value is set to | ||
"False"; see below. | ||||
|
r14940 | |||
Notifications content can be tweaked with the following configuration entries: | ||||
notify.test | ||||
If "True", print messages to stdout instead of sending them. Default: True. | ||||
notify.sources | ||||
|
r16950 | Space-separated list of change sources. Notifications are activated only | ||
when a changeset's source is in this list. Sources may be: | ||||
"serve" changesets received via http or ssh | ||||
"pull" changesets received via "hg pull" | ||||
"unbundle" changesets received via "hg unbundle" | ||||
"push" changesets sent or received via "hg push" | ||||
"bundle" changesets sent via "hg unbundle" | ||||
Default: serve. | ||||
|
r14940 | |||
notify.strip | ||||
Number of leading slashes to strip from url paths. By default, notifications | ||||
|
r16950 | reference repositories with their absolute path. "notify.strip" lets you | ||
|
r14940 | turn them into relative paths. For example, "notify.strip=3" will change | ||
"/long/path/repository" into "repository". Default: 0. | ||||
notify.domain | ||||
|
r16950 | Default email domain for sender or recipients with no explicit domain. | ||
|
r12473 | |||
|
r14940 | notify.style | ||
Style file to use when formatting emails. | ||||
notify.template | ||||
Template to use when formatting emails. | ||||
notify.incoming | ||||
|
r16950 | Template to use when run as an incoming hook, overriding "notify.template". | ||
|
r14940 | |||
notify.outgoing | ||||
|
r16950 | Template to use when run as an outgoing hook, overriding "notify.template". | ||
|
r14940 | |||
notify.changegroup | ||||
|
r16950 | Template to use when running as a changegroup hook, overriding | ||
|
r14940 | "notify.template". | ||
notify.maxdiff | ||||
Maximum number of diff lines to include in notification email. Set to 0 to | ||||
|
r16950 | disable the diff, or -1 to include all of it. Default: 300. | ||
|
r14940 | |||
|
r37795 | notify.maxdiffstat | ||
Maximum number of diffstat lines to include in notification email. Set to -1 | ||||
to include all of it. Default: -1. | ||||
|
r14940 | notify.maxsubject | ||
|
r16950 | Maximum number of characters in email's subject line. Default: 67. | ||
|
r14940 | |||
notify.diffstat | ||||
Set to True to include a diffstat before diff content. Default: True. | ||||
|
r38048 | notify.showfunc | ||
If set, override "diff.showfunc" for the diff content. Default: None. | ||||
|
r14940 | notify.merge | ||
If True, send notifications for merge changesets. Default: True. | ||||
|
r15561 | notify.mbox | ||
If set, append mails to this mbox file instead of sending. Default: None. | ||||
|
r15654 | notify.fromauthor | ||
|
r16950 | If set, use the committer of the first changeset in a changegroup for the | ||
"From" field of the notification mail. If not set, take the user from the | ||||
pushing repo. Default: False. | ||||
|
r15654 | |||
|
r14940 | If set, the following entries will also be used to customize the | ||
notifications: | ||||
email.from | ||||
|
r16950 | Email "From" address to use if none can be found in the generated email | ||
content. | ||||
|
r14940 | |||
web.baseurl | ||||
|
r16950 | Root repository URL to combine with repository paths when making references. | ||
See also "notify.strip". | ||||
|
r12473 | |||
no commands defined | ||||
$ hg init a | ||||
$ echo a > a/a | ||||
|
r37795 | $ echo b > a/b | ||
|
r12473 | |||
commit | ||||
$ hg --cwd a commit -Ama -d '0 0' | ||||
adding a | ||||
|
r37795 | adding b | ||
|
r12473 | |||
clone | ||||
$ hg --traceback clone a b | ||||
updating to branch default | ||||
|
r37795 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r12473 | $ echo a >> a/a | ||
|
r37795 | $ echo b >> a/b | ||
|
r12473 | |||
commit | ||||
$ hg --traceback --cwd a commit -Amb -d '1 0' | ||||
on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> [notify] | ||||
> maxsubject = 200 | ||||
> EOF | ||||
the python call below wraps continuation lines, which appear on Mac OS X 10.5 because | ||||
of the very long subject line | ||||
pull (minimal config) | ||||
|
r39743 | $ hg --traceback --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r12473 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r37795 | added 1 changesets with 2 changes to 2 files | ||
new changesets 00a13f371396 | ||||
|
r34311 | MIME-Version: 1.0 | ||
|
r12473 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
|
r12640 | Subject: changeset in $TESTTMP/b: b | ||
|
r12473 | From: test | ||
|
r37795 | X-Hg-Notification: changeset 00a13f371396 | ||
|
r12473 | Message-Id: <*> (glob) | ||
To: baz, foo@bar | ||||
|
r37795 | changeset 00a13f371396 in $TESTTMP/b | ||
details: $TESTTMP/b?cmd=changeset;node=00a13f371396 | ||||
|
r12473 | description: b | ||
|
r37795 | diffs (12 lines): | ||
|
r12473 | |||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 a | ||
|
r12473 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:01 1970 +0000 | ||||
|
r12646 | @@ -1,1 +1,2 @@ a | ||
|
r12473 | +a | ||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 b | ||
--- a/b Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:01 1970 +0000 | ||||
@@ -1,1 +1,2 @@ b | ||||
+b | ||||
|
r12473 | (run 'hg update' to get a working copy) | ||
|
r33684 | |||
|
r12473 | $ cat <<EOF >> $HGRCPATH | ||
> [notify] | ||||
|
r12642 | > config = `pwd`/.notify.conf | ||
|
r12473 | > domain = test.com | ||
|
r12644 | > strip = 42 | ||
|
r12473 | > template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip} | ||
> | ||||
> [web] | ||||
> baseurl = http://test/ | ||||
> EOF | ||||
fail for config file is missing | ||||
$ hg --cwd b rollback | ||||
|
r13446 | repository tip rolled back to revision 0 (undo pull) | ||
|
r12473 | $ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed | ||
pull failed | ||||
|
r12642 | $ touch ".notify.conf" | ||
|
r12473 | |||
pull | ||||
$ hg --cwd b rollback | ||||
|
r13446 | repository tip rolled back to revision 0 (undo pull) | ||
|
r39743 | $ hg --traceback --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r12473 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r37795 | added 1 changesets with 2 changes to 2 files | ||
new changesets 00a13f371396 | ||||
|
r34311 | MIME-Version: 1.0 | ||
|
r12473 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: b | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 00a13f371396 | ||
|
r12473 | Message-Id: <*> (glob) | ||
To: baz@test.com, foo@bar | ||||
|
r37795 | changeset 00a13f371396 in b | ||
|
r12473 | description: b | ||
|
r37795 | diffs (12 lines): | ||
|
r12473 | |||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 a | ||
|
r12473 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:01 1970 +0000 | ||||
|
r33684 | @@ -1,1 +1,2 @@ a | ||
|
r12473 | +a | ||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 b | ||
--- a/b Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:01 1970 +0000 | ||||
@@ -1,1 +1,2 @@ b | ||||
+b | ||||
|
r12473 | (run 'hg update' to get a working copy) | ||
$ cat << EOF >> $HGRCPATH | ||||
> [hooks] | ||||
> incoming.notify = python:hgext.notify.hook | ||||
> | ||||
> [notify] | ||||
> sources = pull | ||||
> diffstat = True | ||||
> EOF | ||||
pull | ||||
$ hg --cwd b rollback | ||||
|
r13446 | repository tip rolled back to revision 0 (undo pull) | ||
|
r39743 | $ hg --traceback --config notify.maxdiffstat=1 --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r12473 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r37795 | added 1 changesets with 2 changes to 2 files | ||
new changesets 00a13f371396 | ||||
|
r34311 | MIME-Version: 1.0 | ||
|
r12473 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: b | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 00a13f371396 | ||
|
r12473 | Message-Id: <*> (glob) | ||
To: baz@test.com, foo@bar | ||||
|
r37795 | changeset 00a13f371396 in b | ||
|
r12473 | description: b | ||
|
r37795 | diffstat (truncated from 2 to 1 lines): | ||
a | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) | ||||
|
r12473 | |||
|
r37795 | diffs (12 lines): | ||
|
r12473 | |||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 a | ||
|
r12473 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:01 1970 +0000 | ||||
|
r33684 | @@ -1,1 +1,2 @@ a | ||
|
r12473 | +a | ||
|
r37795 | diff -r 0cd96de13884 -r 00a13f371396 b | ||
--- a/b Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:01 1970 +0000 | ||||
@@ -1,1 +1,2 @@ b | ||||
+b | ||||
|
r12473 | (run 'hg update' to get a working copy) | ||
test merge | ||||
$ cd a | ||||
$ hg up -C 0 | ||||
|
r37795 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r12473 | $ echo a >> a | ||
$ hg ci -Am adda2 -d '2 0' | ||||
created new head | ||||
$ hg merge | ||||
|
r37795 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r12473 | (branch merge, don't forget to commit) | ||
$ hg ci -m merge -d '3 0' | ||||
$ cd .. | ||||
|
r39743 | $ hg --traceback --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r12473 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 0 changes to 0 files | ||||
|
r37795 | new changesets 3332653e1f3c:fccf66cd0c35 | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r12473 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: adda2 | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 3332653e1f3c | ||
|
r12473 | Message-Id: <*> (glob) | ||
To: baz@test.com, foo@bar | ||||
|
r37795 | changeset 3332653e1f3c in b | ||
|
r12473 | description: adda2 | ||
diffstat: | ||||
|
r33684 | a | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) | ||
|
r12473 | |||
diffs (6 lines): | ||||
|
r37795 | diff -r 0cd96de13884 -r 3332653e1f3c a | ||
|
r12473 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:02 1970 +0000 | ||||
|
r33684 | @@ -1,1 +1,2 @@ a | ||
|
r12473 | +a | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r12473 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: merge | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset fccf66cd0c35 | ||
|
r12473 | Message-Id: <*> (glob) | ||
To: baz@test.com, foo@bar | ||||
|
r37795 | changeset fccf66cd0c35 in b | ||
|
r12473 | description: merge | ||
|
r37795 | diffstat: | ||
b | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) | ||||
diffs (6 lines): | ||||
diff -r 3332653e1f3c -r fccf66cd0c35 b | ||||
--- a/b Thu Jan 01 00:00:02 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:03 1970 +0000 | ||||
@@ -1,1 +1,2 @@ b | ||||
+b | ||||
|
r12473 | (run 'hg update' to get a working copy) | ||
|
r13225 | |||
|
r15561 | non-ascii content and truncation of multi-byte subject | ||
|
r13225 | |||
$ cat <<EOF >> $HGRCPATH | ||||
> [notify] | ||||
> maxsubject = 4 | ||||
> EOF | ||||
$ echo a >> a/a | ||||
$ hg --cwd a --encoding utf-8 commit -A -d '0 0' \ | ||||
|
r39743 | > -m `"$PYTHON" -c 'print "\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4"'` | ||
|
r13225 | $ hg --traceback --cwd b --encoding utf-8 pull ../a | \ | ||
|
r39743 | > "$PYTHON" $TESTTMP/filter.py | ||
|
r13225 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r37795 | new changesets 0f25f9c22b4c | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r13225 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 8bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: \xc3\xa0... (esc) | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 0f25f9c22b4c | ||
|
r13225 | Message-Id: <*> (glob) | ||
To: baz@test.com, foo@bar | ||||
|
r37795 | changeset 0f25f9c22b4c in b | ||
|
r13225 | description: \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4 (esc) | ||
diffstat: | ||||
|
r33684 | a | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) | ||
|
r13225 | |||
diffs (7 lines): | ||||
|
r37795 | diff -r fccf66cd0c35 -r 0f25f9c22b4c a | ||
|
r13225 | --- a/a Thu Jan 01 00:00:03 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r33684 | @@ -1,2 +1,3 @@ a a | ||
|
r13225 | +a | ||
(run 'hg update' to get a working copy) | ||||
|
r15561 | |||
long lines | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> [notify] | ||||
> maxsubject = 67 | ||||
> test = False | ||||
> mbox = mbox | ||||
> EOF | ||||
|
r39743 | $ "$PYTHON" -c 'open("a/a", "ab").write("no" * 500 + "\xd1\x84" + "\n")' | ||
|
r15561 | $ hg --cwd a commit -A -m "long line" | ||
$ hg --traceback --cwd b pull ../a | ||||
pulling from ../a | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r37795 | new changesets a846b5f6ebb7 | ||
|
r15561 | notify: sending 2 subscribers 1 changes | ||
(run 'hg update' to get a working copy) | ||||
|
r39743 | $ "$PYTHON" $TESTTMP/filter.py < b/mbox | ||
|
r15561 | From test@test.com ... ... .. ..:..:.. .... (re) | ||
MIME-Version: 1.0 | ||||
|
r34311 | Content-Type: text/plain; charset="*" (glob) | ||
|
r15562 | Content-Transfer-Encoding: quoted-printable | ||
|
r15561 | X-Test: foo | ||
Date: * (glob) | ||||
Subject: long line | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset a846b5f6ebb7 | ||
Message-Id: <hg.a846b5f6ebb7.*.*@*> (glob) | ||||
|
r15561 | To: baz@test.com, foo@bar | ||
|
r37795 | changeset a846b5f6ebb7 in b | ||
|
r15561 | description: long line | ||
diffstat: | ||||
|
r33684 | a | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) | ||
|
r15561 | |||
diffs (8 lines): | ||||
|
r37795 | diff -r 0f25f9c22b4c -r a846b5f6ebb7 a | ||
|
r15561 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r33684 | @@ -1,3 +1,4 @@ a a a | ||
|
r15562 | +nonononononononononononononononononononononononononononononononononononono= | ||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
nononononononononononononononononononononononononononononononononononononon= | ||||
ononononononononononononononononononononononononononononononononononononono= | ||||
|
r34311 | nonononononononononononono=D1=84 | ||
|
r15561 | |||
|
r17754 | revset selection: send to address that matches branch and repo | ||
$ cat << EOF >> $HGRCPATH | ||||
> [hooks] | ||||
> incoming.notify = python:hgext.notify.hook | ||||
> | ||||
> [notify] | ||||
> sources = pull | ||||
> test = True | ||||
> diffstat = False | ||||
> maxdiff = 0 | ||||
> | ||||
> [reposubs] | ||||
> */a#branch(test) = will_no_be_send@example.com | ||||
> */b#branch(test) = notify@example.com | ||||
> EOF | ||||
$ hg --cwd a branch test | ||||
marked working directory as branch test | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ echo a >> a/a | ||||
$ hg --cwd a ci -m test -d '1 0' | ||||
|
r39743 | $ hg --traceback --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r17754 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r37795 | new changesets f7e5aaed4080 | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r17754 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: test | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset f7e5aaed4080 | ||
Message-Id: <hg.f7e5aaed4080.*.*@*> (glob) | ||||
|
r17754 | To: baz@test.com, foo@bar, notify@example.com | ||
|
r37795 | changeset f7e5aaed4080 in b | ||
|
r17754 | description: test | ||
(run 'hg update' to get a working copy) | ||||
revset selection: don't send to address that waits for mails | ||||
from different branch | ||||
$ hg --cwd a update default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo a >> a/a | ||||
$ hg --cwd a ci -m test -d '1 0' | ||||
|
r39743 | $ hg --traceback --cwd b pull ../a | "$PYTHON" $TESTTMP/filter.py | ||
|
r17754 | pulling from ../a | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 0 changes to 0 files (+1 heads) | ||||
|
r37795 | new changesets 645eb6690ecf | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r17754 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
X-Test: foo | ||||
Date: * (glob) | ||||
Subject: test | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 645eb6690ecf | ||
Message-Id: <hg.645eb6690ecf.*.*@*> (glob) | ||||
|
r17754 | To: baz@test.com, foo@bar | ||
|
r37795 | changeset 645eb6690ecf in b | ||
|
r17754 | description: test | ||
(run 'hg heads' to see heads) | ||||
|
r28951 | default template: | ||
$ grep -v '^template =' $HGRCPATH > "$HGRCPATH.new" | ||||
$ mv "$HGRCPATH.new" $HGRCPATH | ||||
$ echo a >> a/a | ||||
$ hg --cwd a commit -m 'default template' | ||||
|
r39743 | $ hg --cwd b pull ../a -q | "$PYTHON" $TESTTMP/filter.py | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r28951 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
Subject: changeset in b: default template | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset 5cd4346eed47 | ||
Message-Id: <hg.5cd4346eed47.*.*@*> (glob) | ||||
|
r28951 | To: baz@test.com, foo@bar | ||
|
r37795 | changeset 5cd4346eed47 in $TESTTMP/b | ||
details: http://test/b?cmd=changeset;node=5cd4346eed47 | ||||
|
r28951 | description: default template | ||
with style: | ||||
$ cat <<EOF > notifystyle.map | ||||
> changeset = "Subject: {desc|firstline|strip} | ||||
> From: {author} | ||||
> {""} | ||||
> changeset {node|short}" | ||||
> EOF | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> [notify] | ||||
> style = $TESTTMP/notifystyle.map | ||||
> EOF | ||||
$ echo a >> a/a | ||||
$ hg --cwd a commit -m 'with style' | ||||
|
r39743 | $ hg --cwd b pull ../a -q | "$PYTHON" $TESTTMP/filter.py | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r28951 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
Subject: with style | ||||
From: test@test.com | ||||
|
r37795 | X-Hg-Notification: changeset ec8d9d852f56 | ||
Message-Id: <hg.ec8d9d852f56.*.*@*> (glob) | ||||
|
r28951 | To: baz@test.com, foo@bar | ||
|
r37795 | changeset ec8d9d852f56 | ||
|
r28951 | |||
with template (overrides style): | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> template = Subject: {node|short}: {desc|firstline|strip} | ||||
> From: {author} | ||||
> {""} | ||||
> {desc} | ||||
> EOF | ||||
$ echo a >> a/a | ||||
$ hg --cwd a commit -m 'with template' | ||||
|
r39743 | $ hg --cwd b pull ../a -q | "$PYTHON" $TESTTMP/filter.py | ||
|
r34311 | MIME-Version: 1.0 | ||
|
r28951 | Content-Type: text/plain; charset="us-ascii" | ||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
|
r37795 | Subject: 14721b538ae3: with template | ||
|
r28951 | From: test@test.com | ||
|
r37795 | X-Hg-Notification: changeset 14721b538ae3 | ||
Message-Id: <hg.14721b538ae3.*.*@*> (glob) | ||||
|
r28951 | To: baz@test.com, foo@bar | ||
with template | ||||
|
r38048 | |||
showfunc diff | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> showfunc = True | ||||
> template = | ||||
> maxdiff = -1 | ||||
> EOF | ||||
$ cd a | ||||
$ cat > f1 << EOF | ||||
> int main() { | ||||
> int a = 0; | ||||
> int b = 1; | ||||
> int c = 2; | ||||
> int d = 3; | ||||
> return a + b + c + d; | ||||
> } | ||||
> EOF | ||||
$ hg commit -Am addfunction | ||||
adding f1 | ||||
$ hg --cwd ../b pull ../a | ||||
pulling from ../a | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
new changesets b86bc16ff894 | ||||
MIME-Version: 1.0 | ||||
Content-Type: text/plain; charset="us-ascii" | ||||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
Subject: addfunction | ||||
From: test@test.com | ||||
X-Hg-Notification: changeset b86bc16ff894 | ||||
Message-Id: <hg.b86bc16ff894.*.*@*> (glob) | ||||
To: baz@test.com, foo@bar | ||||
changeset b86bc16ff894 | ||||
diffs (11 lines): | ||||
diff -r 14721b538ae3 -r b86bc16ff894 f1 | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/f1 Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,7 @@ | ||||
+int main() { | ||||
+ int a = 0; | ||||
+ int b = 1; | ||||
+ int c = 2; | ||||
+ int d = 3; | ||||
+ return a + b + c + d; | ||||
+} | ||||
(run 'hg update' to get a working copy) | ||||
$ cat > f1 << EOF | ||||
> int main() { | ||||
> int a = 0; | ||||
> int b = 1; | ||||
> int c = 2; | ||||
> int e = 3; | ||||
> return a + b + c + e; | ||||
> } | ||||
> EOF | ||||
$ hg commit -m changefunction | ||||
$ hg --cwd ../b --config notify.showfunc=True pull ../a | ||||
pulling from ../a | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
new changesets e81040e9838c | ||||
MIME-Version: 1.0 | ||||
Content-Type: text/plain; charset="us-ascii" | ||||
Content-Transfer-Encoding: 7bit | ||||
Date: * (glob) | ||||
Subject: changefunction | ||||
From: test@test.com | ||||
X-Hg-Notification: changeset e81040e9838c | ||||
Message-Id: <hg.e81040e9838c.*.*@*> (glob) | ||||
To: baz@test.com, foo@bar | ||||
changeset e81040e9838c | ||||
diffs (12 lines): | ||||
diff -r b86bc16ff894 -r e81040e9838c f1 | ||||
--- a/f1 Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/f1 Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -2,6 +2,6 @@ int main() { | ||||
int a = 0; | ||||
int b = 1; | ||||
int c = 2; | ||||
- int d = 3; | ||||
- return a + b + c + d; | ||||
+ int e = 3; | ||||
+ return a + b + c + e; | ||||
} | ||||
(run 'hg update' to get a working copy) | ||||