D9929: churn: count lines that look like diff headers but are not
aayjaychan (Aay Jay Chan)
phabricator at mercurial-scm.org
Sat Jan 30 13:48:44 UTC 2021
aayjaychan created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Previously, churn cannot count added lines that start with "++ " or removed
lines that start with "-- ".
REPOSITORY
rHG Mercurial
BRANCH
stable
REVISION DETAIL
https://phab.mercurial-scm.org/D9929
AFFECTED FILES
hgext/churn.py
tests/test-churn.t
CHANGE DETAILS
diff --git a/tests/test-churn.t b/tests/test-churn.t
--- a/tests/test-churn.t
+++ b/tests/test-churn.t
@@ -195,3 +195,22 @@
alltogether 11 *********************************************************
$ cd ..
+
+count lines that look like headings but are not
+
+ $ hg init not-headers
+ $ cd not-headers
+ $ cat > a <<EOF
+ > diff
+ > @@ -195,3 +195,21 @@
+ > -- a/tests/test-churn.t
+ > ++ b/tests/test-churn.t
+ > EOF
+ $ hg ci -Am adda -u user1
+ adding a
+ $ hg churn --diffstat
+ user1 +4/-0 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ $ hg rm a
+ $ hg ci -Am removea -u user1
+ $ hg churn --diffstat
+ user1 +4/-4 +++++++++++++++++++++++++++---------------------------
diff --git a/hgext/churn.py b/hgext/churn.py
--- a/hgext/churn.py
+++ b/hgext/churn.py
@@ -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)
To: aayjaychan, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list