hgext/blackbox.py
changeset 28245 caa2a0c6fbb7
parent 28244 c17d7b1c40be
child 28246 b862e793ec10
--- a/hgext/blackbox.py	Mon Feb 08 03:37:26 2016 +0000
+++ b/hgext/blackbox.py	Tue Feb 09 19:16:06 2016 +0000
@@ -35,6 +35,8 @@
 import re
 
 from mercurial.i18n import _
+from mercurial.node import hex
+
 from mercurial import (
     cmdutil,
     util,
@@ -64,6 +66,12 @@
     del filehandles[path]
     fp.close()
 
+def hexfn(node):
+    if node is None:
+        return None
+    else:
+        return hex(node)
+
 def wrapui(ui):
     class blackboxui(ui.__class__):
         @util.propertycache
@@ -131,17 +139,27 @@
                 user = util.getuser()
                 pid = str(util.getpid())
                 formattedmsg = msg[0] % msg[1:]
+                rev = '(unknown)'
+                if util.safehasattr(self, '_bbrepo'):
+                    ctx = self._bbrepo[None]
+                    if ctx.rev() is not None:
+                        rev = hexfn(ctx.node())
+                    else:
+                        parents = ctx.parents()
+                        rev = ('+'.join([hexfn(p.node()) for p in parents]))
                 try:
-                    fp.write('%s %s (%s)> %s' %
-                                   (date, user, pid, formattedmsg))
+                    fp.write('%s %s @%s (%s)> %s' %
+                        (date, user, rev, pid, formattedmsg))
                     fp.flush()
                 except IOError as err:
                     self.debug('warning: cannot write to blackbox.log: %s\n' %
                                err.strerror)
-                lastfp = fp
+                if not lastfp or util.safehasattr(self, '_bbrepo'):
+                    lastfp = fp
 
         def setrepo(self, repo):
             self._bbvfs = repo.vfs
+            self._bbrepo = repo
 
     ui.__class__ = blackboxui