[PATCH 3 of 5] hidden: add summary support

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Wed Jun 15 10:26:43 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1308150438 -7200
# Node ID dd7f89674a075e080ae50c845e1d6bab31ba7563
# Parent  41c67cd46f8335731d347c9cf211d752e9ee1939
hidden: add summary support

Summary command now show the number of hidden changeset and the number of
hidable changeset that are releaved by non hidable changeset.

diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -121,10 +121,14 @@ class changelog(revlog.revlog):
         The request won't take effect until all children are hidden too.
         """
         self._hidable.add(rev)
         self._refreshhidden(newrevs=(rev,))
 
+    def statshidden(self):
+        """return (<nbhidden changeset>, <nb hidable changeset>) tuple"""
+        return len(self._hidden), len(self._hidable)
+
     def _refreshhidden(self, newrevs=None):
         """Recompute the set of hidden revision
 
         A revision is hidden if both:
             * He is in the hidable,
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4787,10 +4787,17 @@ def summary(ui, repo, **opts):
     elif pnode not in bheads:
         ui.write(_('update: %d new changesets (update)\n') % new)
     else:
         ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
                  (new, len(bheads)))
+    hidden, hidable = repo.changelog.statshidden()
+    if hidable > 0:
+        ui.write(_('hidden: %i hidden changesets\n') % hidden)
+        if hidable != hidden:
+            revealed = hidable - hidden
+            ui.write(_('        %i changesets revealed by their children\n')
+                     % revealed)
 
     if opts.get('remote'):
         t = []
         source, branches = hg.parseurl(ui.expandpath('default'))
         other = hg.peer(repo, {}, source)
diff --git a/tests/test-log.t b/tests/test-log.t
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -1316,10 +1316,17 @@ init repo simple hidden
   4
   3
   2
   1
   0
+  $ hg summary
+  parent: 15:c8e4494f8126 tip
+   15
+  branch: default
+  commit: (clean)
+  update: 7 new changesets, 3 branch heads (merge)
+  hidden: 2 hidden changesets
 
 init repo complex
 
   $ cat > .hg/hidden  << EOF
   > 60e67a92a94fc211dc726afc04db428f12fe0f86 won't work for 3
@@ -1363,5 +1370,14 @@ init repo complex
   4
   3
   2
   1
   0
+  $ hg summary
+  parent: 15:c8e4494f8126 tip
+   15
+  branch: default
+  commit: (clean)
+  update: 7 new changesets, 3 branch heads (merge)
+  hidden: 3 hidden changesets
+          4 changesets revealed by their children
+


More information about the Mercurial-devel mailing list