def diff( path, options={} )
      raise Svn::Error, "cannot diff directory #{path}@#{to_s}" if dir? path

      other = options[:with] if options[:with].is_a? Root
      other = repo.revision(options[:with]) if options[:with].is_a? Numeric
      other ||= repo.revision(to_i - 1)

      return other.diff( path, :with => self ) if other < self

      content = ""
      begin
        content = file_content_stream( path ).to_counted_string
      rescue Svn::Error => err
        raise if options[:raise_errors]
      end

      other_content = ""
      begin
        other_content= other.file_content_stream( path ).to_counted_string
      rescue Svn::Error => err
        raise if options[:raise_errors]
      end

      Diff.string_diff( content, other_content ).unified(
          :original_header => "#{path}@#{to_s}",
          :modified_header => "#{path}@#{other}"
        )
    end
def diff( path, options={} )
      raise Svn::Error, "cannot diff directory #{path}@#{to_s}" if dir? path

      other = options[:with] if options[:with].is_a? Root
      other = repo.revision(options[:with]) if options[:with].is_a? Numeric
      other ||= repo.revision(to_i - 1)

      return other.diff( path, :with => self ) if other < self

      content = ""
      begin
        content = file_content_stream( path ).to_counted_string
      rescue Svn::Error => err
        raise if options[:raise_errors]
      end

      other_content = ""
      begin
        other_content= other.file_content_stream( path ).to_counted_string
      rescue Svn::Error => err
        raise if options[:raise_errors]
      end

      Diff.string_diff( content, other_content ).unified(
          :original_header => "#{path}@#{to_s}",
          :modified_header => "#{path}@#{other}"
        )
    end
diffs +path+ with another revision. if no revision is specified, the
 previous revision is used.