Merge with crew
authorThomas Arendsen Hein <thomas@intevation.de>
Mon, 06 Mar 2006 17:53:11 +0100
changeset 1840 d17f19d84fd3
parent 1839 876e4e6ad82b (current diff)
parent 1837 6f67a4c93493 (diff)
child 1842 eff3496d153d
child 1931 819a2508f2c6
Merge with crew
mercurial/commands.py
mercurial/ui.py
--- a/mercurial/commands.py	Mon Mar 06 17:47:41 2006 +0100
+++ b/mercurial/commands.py	Mon Mar 06 17:53:11 2006 +0100
@@ -2863,27 +2863,30 @@
             else:
                 d = lambda: func(u, *args, **cmdoptions)
 
-            if options['profile']:
-                import hotshot, hotshot.stats
-                prof = hotshot.Profile("hg.prof")
-                try:
+            try:
+                if options['profile']:
+                    import hotshot, hotshot.stats
+                    prof = hotshot.Profile("hg.prof")
                     try:
-                        return prof.runcall(d)
-                    except:
                         try:
-                            u.warn(_('exception raised - generating profile '
-                                     'anyway\n'))
+                            return prof.runcall(d)
                         except:
-                            pass
-                        raise
-                finally:
-                    prof.close()
-                    stats = hotshot.stats.load("hg.prof")
-                    stats.strip_dirs()
-                    stats.sort_stats('time', 'calls')
-                    stats.print_stats(40)
-            else:
-                return d()
+                            try:
+                                u.warn(_('exception raised - generating '
+                                         'profile anyway\n'))
+                            except:
+                                pass
+                            raise
+                    finally:
+                        prof.close()
+                        stats = hotshot.stats.load("hg.prof")
+                        stats.strip_dirs()
+                        stats.sort_stats('time', 'calls')
+                        stats.print_stats(40)
+                else:
+                    return d()
+            finally:
+                u.flush()
         except:
             # enter the debugger when we hit an exception
             if options['debugger']:
--- a/mercurial/ui.py	Mon Mar 06 17:47:41 2006 +0100
+++ b/mercurial/ui.py	Mon Mar 06 17:53:11 2006 +0100
@@ -152,6 +152,12 @@
         for a in args:
             sys.stderr.write(str(a))
 
+    def flush(self):
+        try:
+            sys.stdout.flush()
+        finally:
+            sys.stderr.flush()
+
     def readline(self):
         return sys.stdin.readline()[:-1]
     def prompt(self, msg, pat, default="y"):