hgext/blackbox.py
changeset 28245 caa2a0c6fbb7
parent 28244 c17d7b1c40be
child 28246 b862e793ec10
equal deleted inserted replaced
28244:c17d7b1c40be 28245:caa2a0c6fbb7
    33 
    33 
    34 import errno
    34 import errno
    35 import re
    35 import re
    36 
    36 
    37 from mercurial.i18n import _
    37 from mercurial.i18n import _
       
    38 from mercurial.node import hex
       
    39 
    38 from mercurial import (
    40 from mercurial import (
    39     cmdutil,
    41     cmdutil,
    40     util,
    42     util,
    41 )
    43 )
    42 
    44 
    61 def _closelog(vfs):
    63 def _closelog(vfs):
    62     path = vfs.join('blackbox.log')
    64     path = vfs.join('blackbox.log')
    63     fp = filehandles[path]
    65     fp = filehandles[path]
    64     del filehandles[path]
    66     del filehandles[path]
    65     fp.close()
    67     fp.close()
       
    68 
       
    69 def hexfn(node):
       
    70     if node is None:
       
    71         return None
       
    72     else:
       
    73         return hex(node)
    66 
    74 
    67 def wrapui(ui):
    75 def wrapui(ui):
    68     class blackboxui(ui.__class__):
    76     class blackboxui(ui.__class__):
    69         @util.propertycache
    77         @util.propertycache
    70         def track(self):
    78         def track(self):
   129             if fp:
   137             if fp:
   130                 date = util.datestr(None, '%Y/%m/%d %H:%M:%S')
   138                 date = util.datestr(None, '%Y/%m/%d %H:%M:%S')
   131                 user = util.getuser()
   139                 user = util.getuser()
   132                 pid = str(util.getpid())
   140                 pid = str(util.getpid())
   133                 formattedmsg = msg[0] % msg[1:]
   141                 formattedmsg = msg[0] % msg[1:]
   134                 try:
   142                 rev = '(unknown)'
   135                     fp.write('%s %s (%s)> %s' %
   143                 if util.safehasattr(self, '_bbrepo'):
   136                                    (date, user, pid, formattedmsg))
   144                     ctx = self._bbrepo[None]
       
   145                     if ctx.rev() is not None:
       
   146                         rev = hexfn(ctx.node())
       
   147                     else:
       
   148                         parents = ctx.parents()
       
   149                         rev = ('+'.join([hexfn(p.node()) for p in parents]))
       
   150                 try:
       
   151                     fp.write('%s %s @%s (%s)> %s' %
       
   152                         (date, user, rev, pid, formattedmsg))
   137                     fp.flush()
   153                     fp.flush()
   138                 except IOError as err:
   154                 except IOError as err:
   139                     self.debug('warning: cannot write to blackbox.log: %s\n' %
   155                     self.debug('warning: cannot write to blackbox.log: %s\n' %
   140                                err.strerror)
   156                                err.strerror)
   141                 lastfp = fp
   157                 if not lastfp or util.safehasattr(self, '_bbrepo'):
       
   158                     lastfp = fp
   142 
   159 
   143         def setrepo(self, repo):
   160         def setrepo(self, repo):
   144             self._bbvfs = repo.vfs
   161             self._bbvfs = repo.vfs
       
   162             self._bbrepo = repo
   145 
   163 
   146     ui.__class__ = blackboxui
   164     ui.__class__ = blackboxui
   147 
   165 
   148 def uisetup(ui):
   166 def uisetup(ui):
   149     wrapui(ui)
   167     wrapui(ui)