Skip to content
Snippets Groups Projects
Commit 2a7fa7c6 authored by Nikolaus Schueler's avatar Nikolaus Schueler
Browse files

notify: change behavior of "changegroup" hook

Change the behavior so that the sender (the "From" header in the notification
mail) in case of the "changegroup" hook is the user that did the first commit
in the changegroup.  The option is configurable, if you set "notify.fromauthor"
to "True" in your config, the new behavior is activated.  If you do not set the
option, the behavior is as before.  The commit adds to an existing test to show
various aspects of the changed behavior.
parent 93c77d5b
No related branches found
No related tags found
No related merge requests found
......@@ -108,6 +108,11 @@
notify.mbox
If set, append mails to this mbox file instead of sending. Default: None.
notify.fromauthor
If set, use the first committer of the changegroup for the "From" field of
the notification mail. If not set, take the user from the pushing repo.
Default: False.
If set, the following entries will also be used to customize the notifications:
email.from
......@@ -338,8 +343,9 @@
ui.pushbuffer()
data = ''
count = 0
author = ''
if hooktype == 'changegroup' or hooktype == 'outgoing':
start, end = ctx.rev(), len(repo)
for rev in xrange(start, end):
if n.node(repo[rev]):
count += 1
......@@ -341,8 +347,10 @@
if hooktype == 'changegroup' or hooktype == 'outgoing':
start, end = ctx.rev(), len(repo)
for rev in xrange(start, end):
if n.node(repo[rev]):
count += 1
if not author:
author = repo[rev].user()
else:
data += ui.popbuffer()
ui.note(_('notify: suppressing notification for merge %d:%s\n') %
......@@ -360,5 +368,9 @@
n.diff(ctx)
data += ui.popbuffer()
fromauthor = ui.config('notify', 'fromauthor')
if author and fromauthor:
data = '\n'.join(['From: %s' % author, data])
if count:
n.send(ctx, count, data)
......@@ -124,3 +124,91 @@
+a
+a
(run 'hg update' to get a working copy)
Check that using the first committer as the author of a changeset works:
Check that the config option works.
Check that the first committer is indeed used for "From:".
Check that the merge user is NOT used for "From:"
Create new file
$ echo a > b/b
$ echo b >> b/b
$ echo c >> b/b
$ hg --traceback --cwd b commit -Amnewfile -u committer_1
adding b
commit as one user
$ echo x > b/b
$ echo b >> b/b
$ echo c >> b/b
$ hg --traceback --cwd b commit -Amx -u committer_2
commit as other user, change file so we can do an (automatic) merge
$ hg --cwd b up 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo a > b/b
$ echo b >> b/b
$ echo y >> b/b
$ hg --traceback --cwd b commit -Amy -u committer_3
created new head
merge as a different user
$ hg --cwd b merge --config notify.fromauthor=True
merging b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg --traceback --cwd b commit -Am "merged"
push
$ hg --traceback --cwd b --config notify.fromauthor=True push ../a 2>&1 |
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
pushing to ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Date: * (glob)
Subject: * (glob)
From: committer_1
X-Hg-Notification: changeset 84e487dddc58
Message-Id: <*> (glob)
To: baz, foo@bar
changeset 84e487dddc58 in $TESTTMP/a
details: $TESTTMP/a?cmd=changeset;node=84e487dddc58
summary: newfile
changeset b29c7a2b6b0c in $TESTTMP/a
details: $TESTTMP/a?cmd=changeset;node=b29c7a2b6b0c
summary: x
changeset 0957c7d64886 in $TESTTMP/a
details: $TESTTMP/a?cmd=changeset;node=0957c7d64886
summary: y
changeset 485b4e6b0249 in $TESTTMP/a
details: $TESTTMP/a?cmd=changeset;node=485b4e6b0249
summary: merged
diffs (7 lines):
diff -r ba677d0156c1 -r 485b4e6b0249 b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/b Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,3 @@
+x
+b
+y
$ hg --cwd a rollback
repository tip rolled back to revision 1 (undo push)
......@@ -116,6 +116,11 @@
notify.mbox
If set, append mails to this mbox file instead of sending. Default: None.
notify.fromauthor
If set, use the first committer of the changegroup for the "From" field of
the notification mail. If not set, take the user from the pushing repo.
Default: False.
If set, the following entries will also be used to customize the
notifications:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment