[PATCH] churn: Fixes issue 1569, handles subdirectories correctly and adds a test case.

Madhusudan C.S madhusudancs at gmail.com
Tue Mar 24 15:21:45 CDT 2009


Updated Patch
___________


# HG changeset patch
# User madhu at madhu
# Date 1237925943 -19800
# Node ID fcc918d0cd3f8a4ba4cd90bdf9e458c000e23a74
# Parent  b2c18c7956221df0f961ac697a01effa1233978f
Returns lines changed for paths specified as arguments correctly.

This fixes issue 1569. hg churn <path> now returns only the number
of lines changed in the path, if the path is specified by filtering
files through a match filter at the changeset level. test-churn
has been updated to take care of this issue.

diff -r b2c18c795622 -r fcc918d0cd3f hgext/churn.py
--- a/hgext/churn.py    Fri Mar 20 18:55:20 2009 -0500
+++ b/hgext/churn.py    Wed Mar 25 01:49:03 2009 +0530
@@ -21,9 +21,10 @@
     t.use_template(tmpl)
     return t

-def changedlines(ui, repo, ctx1, ctx2):
+def changedlines(ui, repo, ctx1, ctx2, fns):
     lines = 0
-    diff = ''.join(patch.diff(repo, ctx1.node(), ctx2.node()))
+    fmatch = cmdutil.match(repo, pats=fns)
+    diff = ''.join(patch.diff(repo, ctx1.node(), ctx2.node(), fmatch))
     for l in diff.split('\n'):
         if (l.startswith("+") and not l.startswith("+++ ") or
             l.startswith("-") and not l.startswith("--- ")):
@@ -71,7 +72,7 @@
                 continue

             ctx1 = parents[0]
-            lines = changedlines(ui, repo, ctx1, ctx)
+            lines = changedlines(ui, repo, ctx1, ctx, fns)
             rate[key] = rate.get(key, 0) + lines

         if opts.get('progress'):
diff -r b2c18c795622 -r fcc918d0cd3f tests/test-churn
--- a/tests/test-churn    Fri Mar 20 18:55:20 2009 -0500
+++ b/tests/test-churn    Wed Mar 25 01:49:03 2009 +0530
@@ -20,7 +20,15 @@
 hg ci -m changeca -u user3 -d 12:00 a
 hg ci -m changecb -u user3 -d 12:15 b
 hg ci -Am addc -u user3 -d 12:30
+mkdir -p d/e
+echo abc > d/e/f1.txt
+hg ci -Am "add d/e/f1.txt" -u user1 -d 12:45 d/e/f1.txt
+mkdir -p d/g
+echo def > d/g/f2.txt
+hg ci -Am "add d/g/f2.txt" -u user1 -d 13:00 d/g/f2.txt

+echo % churn separate directories
+hg churn d/e
 echo % churn all
 hg churn
 echo % churn up to rev 2
diff -r b2c18c795622 -r fcc918d0cd3f tests/test-churn.out
--- a/tests/test-churn.out    Fri Mar 20 18:55:20 2009 -0500
+++ b/tests/test-churn.out    Wed Mar 25 01:49:03 2009 +0530
@@ -2,22 +2,25 @@
 adding a
 adding b
 adding c
+% churn separate directories
+user1      1
***************************************************************
 % churn all
 user3      3
***************************************************************
+user1      3
***************************************************************
 user2      2 ******************************************
-user1      1 *********************
 % churn up to rev 2
 user2      2
***************************************************************
 user1      1 *******************************
 % churn with aliases
 alias3      3
**************************************************************
+alias1      3
**************************************************************
 user2       2 *****************************************
-alias1      1 ********************
 % churn with column specifier
 user3      3 ***********************
+user1      3 ***********************
 user2      2 ***************
-user1      1 *******
 % churn by hour
-06      1 **********************
-09      2 ********************************************
-12      3
******************************************************************
+06      1 ****************
+09      2 *********************************
+12      4
******************************************************************
+13      1 ****************


-- 
Thanks and regards,
 Madhusudan.C.S

Blogs at: www.madhusudancs.info
Official Email ID: madhusudan at madhusudancs.info
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://selenic.com/pipermail/mercurial-devel/attachments/20090325/1aafce05/attachment.htm 


More information about the Mercurial-devel mailing list