diff mercurial/scmutil.py @ 39497:89630d0b3e23

phase: report number of non-public changeset alongside the new range When interacting with non-publishing repository or bundle, it is useful to have some information about the phase of the changeset we just pulled. This changeset updates the "new changesets MIN:MAX" output to also includes phases information for non-public changesets. Displaying extra data about non-public changesets means the output for exchange with publishing repository (the default) is unaffected.
author Boris Feld <boris.feld@octobus.net>
date Thu, 30 Aug 2018 01:53:21 +0200
parents 570fca90d556
children 6192980553b4
line wrap: on
line diff
--- a/mercurial/scmutil.py	Fri Sep 07 23:54:42 2018 -0400
+++ b/mercurial/scmutil.py	Thu Aug 30 01:53:21 2018 +0200
@@ -1634,7 +1634,22 @@
                 revrange = minrev
             else:
                 revrange = '%s:%s' % (minrev, maxrev)
-            repo.ui.status(_('new changesets %s\n') % revrange)
+            draft = len(repo.revs('%ld and draft()', revs))
+            secret = len(repo.revs('%ld and secret()', revs))
+            if not (draft or secret):
+                msg = _('new changesets %s\n') % revrange
+            elif draft and secret:
+                msg = _('new changesets %s (%d drafts, %d secrets)\n')
+                msg %= (revrange, draft, secret)
+            elif draft:
+                msg = _('new changesets %s (%d drafts)\n')
+                msg %= (revrange, draft)
+            elif secret:
+                msg = _('new changesets %s (%d secrets)\n')
+                msg %= (revrange, secret)
+            else:
+                raise error.ProgrammingError('entered unreachable condition')
+            repo.ui.status(msg)
 
         @reportsummary
         def reportphasechanges(repo, tr):