diff hgext/blackbox.py @ 18786:ed39a8f94e95

blackbox: prevent failed I/O from causing hg to abort Instead, we simply print a warning message if opening the blackbox log file fails, or if writing to it fails.
author Bryan O'Sullivan <bryano@fb.com>
date Wed, 20 Mar 2013 13:40:05 -0700
parents 1506eb487ddd
children f56278a0a0c5
line wrap: on
line diff
--- a/hgext/blackbox.py	Tue Mar 19 16:19:45 2013 -0700
+++ b/hgext/blackbox.py	Wed Mar 20 13:40:05 2013 -0700
@@ -57,11 +57,20 @@
                 date = util.datestr(None, '%Y/%m/%d %H:%M:%S')
                 user = getpass.getuser()
                 formattedmsg = msg[0] % msg[1:]
-                blackbox.write('%s %s> %s' % (date, user, formattedmsg))
+                try:
+                    blackbox.write('%s %s> %s' % (date, user, formattedmsg))
+                except IOError, err:
+                    self.debug('warning: cannot write to blackbox.log: %s\n' %
+                               err.strerror)
                 lastblackbox = blackbox
 
         def setrepo(self, repo):
-            self._blackbox = repo.opener('blackbox.log', 'a')
+            try:
+                self._blackbox = repo.opener('blackbox.log', 'a')
+            except IOError, err:
+                self.debug('warning: cannot write to blackbox.log: %s\n' %
+                           err.strerror)
+                self._blackbox = None
 
     ui.__class__ = blackboxui