code: def get_diff(self, rev1, rev2, path='', ignore_whitespace=False,
                    context=3):
          
          if hasattr(rev1, 'raw_id'):
              rev1 = getattr(rev1, 'raw_id')
  
          if hasattr(rev2, 'raw_id'):
              rev2 = getattr(rev2, 'raw_id')
  
          # Check if given revisions are present at repository (may raise
          # ChangesetDoesNotExistError)
          if rev1 != self.EMPTY_CHANGESET:
              self.get_changeset(rev1)
          self.get_changeset(rev2)
          if path:
              file_filter = match(self.path, '', [path])
          else:
              file_filter = None
  
          return ''.join(patch.diff(self._repo, rev1, rev2, match=file_filter,
                            opts=diffopts(git=True,
                                          ignorews=ignore_whitespace,
                                          context=context)))
docs: Returns (git like) *diff*, as plain text. Shows changes introduced by
          ``rev2`` since ``rev1``.
  
          :param rev1: Entry point from which diff is shown. Can be
            ``self.EMPTY_CHANGESET`` - in this case, patch showing all
            the changes since empty state of the repository until ``rev2``
          :param rev2: Until which revision changes should be shown.
          :param ignore_whitespace: If set to ``True``, would not show whitespace
            changes. Defaults to ``False``.
          :param context: How many lines before/after changed lines should be
            shown. Defaults to ``3``.