code: def get_version_history_for_file(self, filepath):
          
          # define the desired fields for logout output, matching the order in these lists!
          GIT_COMMIT_FIELDS = ['id',
                               'author_name',
                               'author_email',
                               'date',
                               'date_ISO_8601',
                               'relative_date',
                               'message_subject',
                               'message_body']
          GIT_LOG_FORMAT = ['%H', '%an', '%ae', '%aD', '%ai', '%ar', '%s', '%b']
          # make the final format string, using standard ASCII field/record delimiters
          GIT_LOG_FORMAT = '%x1f'.join(GIT_LOG_FORMAT) + '%x1e'
          try:
              log = git(self.gitdir,
                        self.gitwd,
                        '--no-pager',
                        'log',
                        '--format=%s' % GIT_LOG_FORMAT,
                        '--follow',  # Track file's history when moved/renamed...
                        '--find-renames=100%',  # ... but only if the contents are identical!
                        '--',
                        filepath)
              # _LOG.debug('log said "{}"'.format(log))
              log = log.strip('\n\x1e').split("\x1e")
              log = [row.strip().split("\x1f") for row in log]
              log = [dict(zip(GIT_COMMIT_FIELDS, row)) for row in log]
          except:
              _LOG.exception('git log failed')
              raise
          return log
docs: Return a dict representation of this file's commit history
  
          This uses specially formatted git-log output for easy parsing, as described here:
              http://blog.lost-theory.org/post/how-to-parse-git-log-output/
          For a full list of available fields, see:
              http://linux.die.net/man/1/git-log