docs: def _getRevDetails(self, rev):
          """Return a deferred for (date, author, files, comments) of given rev.
  
          Deferred will be in error if rev is unknown.
          """
          args = ['log', '-r', rev, os.linesep.join((
              '--template={date|hgdate}',
              '{author}',
              "{files % '{file}" + os.pathsep + "'}",
              '{desc|strip}'))]
          # Mercurial fails with status 255 if rev is unknown
          d = utils.getProcessOutput(self.hgbin, args, path=self._absWorkdir(),
                                     env=os.environ, errortoo=False)
  
          @d.addCallback
          def process(output):
              # all file names are on one line
              output = output.decode(self.encoding, "replace")
              date, author, files, comments = output.split(
                  os.linesep, 3)
  
              if not self.usetimestamps:
                  stamp = None
              else:
                  try:
                      stamp = float(date.split()[0])
                  except Exception:
                      log.msg('hgpoller: caught exception converting output %r '
                              'to timestamp' % date)
                      raise
              return stamp, author.strip(), files.split(os.pathsep)[:-1], comments.strip()
          return d