Patchwork [V2] ummary: add troubles list to the output of hg summary

login
register
mail settings
Submitter Laurent Charignon
Date Dec. 10, 2015, 9:49 p.m.
Message ID <e6d32e1ad5bc8bd69632.1449784189@lcharignon-mbp.local>
Download mbox | patch
Permalink /patch/11960/
State Superseded
Headers show

Comments

Laurent Charignon - Dec. 10, 2015, 9:49 p.m.
# HG changeset patch
# User Laurent Charignon <lcharignon@fb.com>
# Date 1449784145 28800
#      Thu Dec 10 13:49:05 2015 -0800
# Node ID e6d32e1ad5bc8bd69632183c0c530b24738882a7
# Parent  71aa5a26162d6e4a165b68f07b331e3e2eedc117
ummary: add troubles list to the output of hg summary

This patch adds troubles information for the output of hg summary.
Example lines displayed in hg summary:
unstable: 1 changeset
bumped: 2 changesets
Sean Farley - Dec. 10, 2015, 11:20 p.m.
Laurent Charignon <lcharignon@fb.com> writes:

> # HG changeset patch
> # User Laurent Charignon <lcharignon@fb.com>
> # Date 1449784145 28800
> #      Thu Dec 10 13:49:05 2015 -0800
> # Node ID e6d32e1ad5bc8bd69632183c0c530b24738882a7
> # Parent  71aa5a26162d6e4a165b68f07b331e3e2eedc117
> ummary: add troubles list to the output of hg summary

Whoops. Forgot the 's'.

> This patch adds troubles information for the output of hg summary.
> Example lines displayed in hg summary:
> unstable: 1 changeset
> bumped: 2 changesets
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -6335,6 +6335,22 @@ def summary(ui, repo, **opts):
>      if draft or secret:
>          ui.status(_('phases: %s\n') % ', '.join(t))
>  
> +    if obsolete.isenabled(repo, obsolete.createmarkersopt):
> +        for trouble in ("unstable", "divergent", "bumped"):
> +            numtrouble = len(repo.revs(trouble + "()"))
> +            # We write all the possibilities to ease translation
> +            troublemsg = {
> +               "unstable": (_("unstable: %d changeset"),
> +                            _("unstable: %d changesets")),
> +               "divergent": (_("divergent: %d changeset"),
> +                            _("divergent: %d changesets")),
> +               "bumped": (_("bumped: %d changeset"),
> +                            _("bumped: %d changesets")),
> +            }
> +            if numtrouble > 0:
> +                plural = 0 if numtrouble == 1 else 1
> +                ui.status(troublemsg[trouble][plural] % numtrouble + "\n")
> +

To quote mpm, "plurals are hard(er than you think), please don't add
logic". So, the easiest thing to do is just use the plural always.
Another option that sounds native to my ear is "1 unstable, 2 divergent"
(doesn't require any 's') but that would require a different patch
entirely.

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -6335,6 +6335,22 @@  def summary(ui, repo, **opts):
     if draft or secret:
         ui.status(_('phases: %s\n') % ', '.join(t))
 
+    if obsolete.isenabled(repo, obsolete.createmarkersopt):
+        for trouble in ("unstable", "divergent", "bumped"):
+            numtrouble = len(repo.revs(trouble + "()"))
+            # We write all the possibilities to ease translation
+            troublemsg = {
+               "unstable": (_("unstable: %d changeset"),
+                            _("unstable: %d changesets")),
+               "divergent": (_("divergent: %d changeset"),
+                            _("divergent: %d changesets")),
+               "bumped": (_("bumped: %d changeset"),
+                            _("bumped: %d changesets")),
+            }
+            if numtrouble > 0:
+                plural = 0 if numtrouble == 1 else 1
+                ui.status(troublemsg[trouble][plural] % numtrouble + "\n")
+
     cmdutil.summaryhooks(ui, repo)
 
     if opts.get('remote'):
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -238,6 +238,14 @@  And that we can't push bumped changeset
 Fixing "bumped" situation
 We need to create a clone of 5 and add a special marker with a flag
 
+  $ hg summary
+  parent: 5:5601fb93a350 tip
+   add new_3_c
+  branch: default
+  commit: (clean)
+  update: 1 new changesets, 2 branch heads (merge)
+  phases: 1 draft
+  bumped: 1 changeset
   $ hg up '5^'
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg revert -ar 5
@@ -465,6 +473,14 @@  detect outgoing obsolete and unstable
   94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
   $ hg log -r 'obsolete()'
   4:94b33453f93b (draft) [ ] add original_d
+  $ hg summary
+  parent: 5:cda648ca50f5 tip
+   add original_e
+  branch: default
+  commit: (clean)
+  update: 1 new changesets, 2 branch heads (merge)
+  phases: 3 draft
+  unstable: 1 changeset
   $ hg log -G -r '::unstable()'
   @  5:cda648ca50f5 (draft) [tip ] add original_e
   |