debugbuilddag: output progress information
authorMartin Geisler <mg@aragost.com>
Mon, 09 May 2011 14:40:49 +0200
changeset 14279 b039b667515d
parent 14278 59c820a6ca79
child 14280 98e4d3914c2e
debugbuilddag: output progress information
mercurial/commands.py
tests/test-debugbuilddag.t
--- a/mercurial/commands.py	Mon May 09 14:33:08 2011 +0200
+++ b/mercurial/commands.py	Mon May 09 14:40:49 2011 +0200
@@ -1005,15 +1005,16 @@
     if len(cl) > 0:
         raise util.Abort(_('repository is not empty'))
 
+    # determine number of revs in DAG
+    total = 0
+    for type, data in dagparser.parsedag(text):
+        if type == 'n':
+            total += 1
+
     if mergeable_file:
         linesperrev = 2
-        # determine number of revs in DAG
-        n = 0
-        for type, data in dagparser.parsedag(text):
-            if type == 'n':
-                n += 1
         # make a file with k lines per rev
-        initialmergedlines = [str(i) for i in xrange(0, n * linesperrev)]
+        initialmergedlines = [str(i) for i in xrange(0, total * linesperrev)]
         initialmergedlines.append("")
 
     tags = []
@@ -1024,6 +1025,7 @@
         at = -1
         atbranch = 'default'
         nodeids = []
+        ui.progress(_('building'), 0, unit=_('revisions'), total=total)
         for type, data in dagparser.parsedag(text):
             if type == 'n':
                 ui.note('node %s\n' % str(data))
@@ -1092,8 +1094,10 @@
             elif type == 'a':
                 ui.note('branch %s\n' % data)
                 atbranch = data
+            ui.progress(_('building'), id, unit=_('revisions'), total=total)
         tr.close()
     finally:
+        ui.progress(_('building'), None)
         tr.release()
 
     if tags:
--- a/tests/test-debugbuilddag.t	Mon May 09 14:33:08 2011 +0200
+++ b/tests/test-debugbuilddag.t	Mon May 09 14:40:49 2011 +0200
@@ -4,7 +4,48 @@
 plain
 
   $ hg init
-  $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2'
+  $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' \
+  > --config extensions.progress= --config progress.assume-tty=1 \
+  > --config progress.delay=0 --config progress.refresh=0 \
+  > --config progress.width=60 2>&1 | \
+  > python $TESTDIR/filtercr.py
+  
+  building [                                          ]  0/12
+  building [                                          ]  0/12
+  building [                                          ]  0/12
+  building [                                          ]  0/12
+  building [==>                                       ]  1/12
+  building [==>                                       ]  1/12
+  building [==>                                       ]  1/12
+  building [==>                                       ]  1/12
+  building [======>                                   ]  2/12
+  building [======>                                   ]  2/12
+  building [=========>                                ]  3/12
+  building [=========>                                ]  3/12
+  building [=============>                            ]  4/12
+  building [=============>                            ]  4/12
+  building [=============>                            ]  4/12
+  building [=============>                            ]  4/12
+  building [=============>                            ]  4/12
+  building [=============>                            ]  4/12
+  building [================>                         ]  5/12
+  building [================>                         ]  5/12
+  building [====================>                     ]  6/12
+  building [====================>                     ]  6/12
+  building [=======================>                  ]  7/12
+  building [=======================>                  ]  7/12
+  building [===========================>              ]  8/12
+  building [===========================>              ]  8/12
+  building [===========================>              ]  8/12
+  building [===========================>              ]  8/12
+  building [==============================>           ]  9/12
+  building [==============================>           ]  9/12
+  building [==================================>       ] 10/12
+  building [==================================>       ] 10/12
+  building [=====================================>    ] 11/12
+  building [=====================================>    ] 11/12
+                                                              \r (esc)
+
 tags
   $ cat .hg/localtags
   66f7d451a68b85ed82ff5fcc254daf50c74144bd f