diff hgext/churn.py @ 46430:b84c3d43ff2e

churn: count lines that look like diff headers but are not Previously, churn cannot count added lines that start with "++ " or removed lines that start with "-- ". Differential Revision: https://phab.mercurial-scm.org/D9929
author Aay Jay Chan <aayjaychan@itopia.com.hk>
date Sat, 30 Jan 2021 18:30:11 +0800
parents 89a2afe31e82
children 6000f5b25c9b
line wrap: on
line diff
--- a/hgext/churn.py	Mon Jan 25 12:31:40 2021 +0100
+++ b/hgext/churn.py	Sat Jan 30 18:30:11 2021 +0800
@@ -38,11 +38,16 @@
 def changedlines(ui, repo, ctx1, ctx2, fmatch):
     added, removed = 0, 0
     diff = b''.join(patch.diff(repo, ctx1.node(), ctx2.node(), fmatch))
+    inhunk = False
     for l in diff.split(b'\n'):
-        if l.startswith(b"+") and not l.startswith(b"+++ "):
+        if inhunk and l.startswith(b"+"):
             added += 1
-        elif l.startswith(b"-") and not l.startswith(b"--- "):
+        elif inhunk and l.startswith(b"-"):
             removed += 1
+        elif l.startswith(b"@"):
+            inhunk = True
+        elif l.startswith(b"d"):
+            inhunk = False
     return (added, removed)