@Override
  @NotNull
  public FileAnnotation annotate(@NotNull VirtualFile file) throws VcsException {
    SvnDiffProvider provider = (SvnDiffProvider)myVcs.getDiffProvider();
    SvnRevisionNumber currentRevision = ((SvnRevisionNumber)provider.getCurrentRevision(file));
    VcsRevisionDescription lastChangedRevision = provider.getCurrentRevisionDescription(file);
    if (lastChangedRevision == null) {
      throw new VcsException(message("error.can.not.get.current.revision.for.path", file.getPath()));
    }
    final Revision revision = ((SvnRevisionNumber)lastChangedRevision.getRevisionNumber()).getRevision();
    if (!revision.isValid()) {
      throw new VcsException(message("error.can.not.get.last.changed.revision.for.path.please.file.an.issue", file.getPath()));
    }
    return annotate(file, currentRevision, lastChangedRevision.getRevisionNumber(), () -> {
      byte[] data = getFileContents(myVcs, Target.on(virtualToIoFile(file).getAbsoluteFile()), Revision.BASE, Revision.UNDEFINED);
      return getTextByBinaryPresentation(data, file, false, false).toString();
    });
  }
@Override
  @NotNull
  public FileAnnotation annotate(@NotNull VirtualFile file)