D899: annotate: track whether a particular annotation was the result of a skip

sid0 (Siddharth Agarwal) phabricator at mercurial-scm.org
Mon Oct 2 11:08:09 EDT 2017


sid0 updated this revision to Diff 2331.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D899?vs=2329&id=2331

REVISION DETAIL
  https://phab.mercurial-scm.org/D899

AFFECTED FILES
  mercurial/context.py
  tests/test-annotate.py

CHANGE DETAILS

diff --git a/tests/test-annotate.py b/tests/test-annotate.py
--- a/tests/test-annotate.py
+++ b/tests/test-annotate.py
@@ -80,20 +80,22 @@
                                  diffopts)
         self.assertEqual(childann[0], [
             annotateline('old', 1),
-            annotateline('old', 2),
+            annotateline('old', 2, True),
+            # note that this line was carried over from earlier so it is *not*
+            # marked skipped
             annotateline('p2', 2),
-            annotateline('p2', 2),
+            annotateline('p2', 2, True),
             annotateline('p2', 3),
         ])
 
         childann = decorate(childdata, childfctx)
         childann = _annotatepair([p2ann, p1ann], childfctx, childann, True,
                                  diffopts)
         self.assertEqual(childann[0], [
             annotateline('old', 1),
-            annotateline('old', 2),
+            annotateline('old', 2, True),
             annotateline('p1', 3),
-            annotateline('p1', 3),
+            annotateline('p1', 3, True),
             annotateline('p2', 3),
         ])
 
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1111,6 +1111,8 @@
 class annotateline(object):
     fctx = attr.ib()
     lineno = attr.ib(default=False)
+    # Whether this annotation was the result of a skip-annotate.
+    skip = attr.ib(default=False)
 
 def _annotatepair(parents, childfctx, child, skipchild, diffopts):
     r'''
@@ -1159,7 +1161,7 @@
                     for bk in xrange(b1, b2):
                         if child[0][bk].fctx == childfctx:
                             ak = min(a1 + (bk - b1), a2 - 1)
-                            child[0][bk] = parent[0][ak]
+                            child[0][bk] = attr.evolve(parent[0][ak], skip=True)
                 else:
                     remaining[idx][1].append((a1, a2, b1, b2))
 
@@ -1170,7 +1172,7 @@
                 for bk in xrange(b1, b2):
                     if child[0][bk].fctx == childfctx:
                         ak = min(a1 + (bk - b1), a2 - 1)
-                        child[0][bk] = parent[0][ak]
+                        child[0][bk] = attr.evolve(parent[0][ak], skip=True)
     return child
 
 class filectx(basefilectx):



To: sid0, #hg-reviewers
Cc: indygreg, mercurial-devel


More information about the Mercurial-devel mailing list