code: def get_file_history(self, path, limit=None):
          
          self._get_filectx(path)
          cs_id = safe_str(self.id)
          f_path = safe_str(path)
  
          if limit:
              cmd = 'log -n %s --pretty="format: %%H" -s -p %s -- "%s"' % (
                        safe_int(limit, 0), cs_id, f_path
                     )
  
          else:
              cmd = 'log --pretty="format: %%H" -s -p %s -- "%s"' % (
                        cs_id, f_path
                     )
          so, se = self.repository.run_git_command(cmd)
          ids = re.findall(r'[0-9a-fA-F]{40}', so)
          return [self.repository.get_changeset(id) for id in ids]
docs: Returns history of file as reversed list of ``Changeset`` objects for
          which file at given ``path`` has been modified.
  
          TODO: This function now uses os underlying 'git' and 'grep' commands
          which is generally not good. Should be replaced with algorithm
          iterating commits.