changeset 38028:d1134ca5b1a3

notify: add option to include function names in the diff output This is a localized version of diff.showfunc. Differential Revision: https://phab.mercurial-scm.org/D3553
author Joerg Sonnenberger <joerg@bec.de>
date Sat, 12 May 2018 23:44:08 +0200
parents 1b8238f67bf2
children a4a5c3085ea9
files hgext/notify.py tests/test-notify.t
diffstat 2 files changed, 111 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/notify.py	Wed May 16 10:34:31 2018 -0700
+++ b/hgext/notify.py	Sat May 12 23:44:08 2018 +0200
@@ -113,6 +113,9 @@
 notify.diffstat
   Set to True to include a diffstat before diff content. Default: True.
 
+notify.showfunc
+  If set, override ``diff.showfunc`` for the diff content. Default: None.
+
 notify.merge
   If True, send notifications for merge changesets. Default: True.
 
@@ -206,6 +209,9 @@
 configitem('notify', 'sources',
     default='serve',
 )
+configitem('notify', 'showfunc',
+    default=None,
+)
 configitem('notify', 'strip',
     default=0,
 )
@@ -260,6 +266,9 @@
         self.charsets = mail._charsets(self.ui)
         self.subs = self.subscribers()
         self.merge = self.ui.configbool('notify', 'merge')
+        self.showfunc = self.ui.configbool('notify', 'showfunc')
+        if self.showfunc is None:
+            self.showfunc = self.ui.configbool('diff', 'showfunc')
 
         mapfile = None
         template = (self.ui.config('notify', hooktype) or
@@ -420,8 +429,9 @@
             ref = ref.node()
         else:
             ref = ctx.node()
-        chunks = patch.diff(self.repo, prev, ref,
-                            opts=patch.diffallopts(self.ui))
+        diffopts = patch.diffallopts(self.ui)
+        diffopts.showfunc = self.showfunc
+        chunks = patch.diff(self.repo, prev, ref, opts=diffopts)
         difflines = ''.join(chunks).splitlines()
 
         if self.ui.configbool('notify', 'diffstat'):
--- a/tests/test-notify.t	Wed May 16 10:34:31 2018 -0700
+++ b/tests/test-notify.t	Sat May 12 23:44:08 2018 +0200
@@ -131,6 +131,9 @@
   notify.diffstat
     Set to True to include a diffstat before diff content. Default: True.
   
+  notify.showfunc
+    If set, override "diff.showfunc" for the diff content. Default: None.
+  
   notify.merge
     If True, send notifications for merge changesets. Default: True.
   
@@ -647,3 +650,99 @@
   To: baz@test.com, foo@bar
   
   with template
+
+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)