Class SVNLookClient

java.lang.Object
org.tmatesoft.svn.core.wc.admin.SVNAdminBasicClient
org.tmatesoft.svn.core.wc.admin.SVNLookClient
All Implemented Interfaces:
ISVNCanceller, ISVNEventHandler

public class SVNLookClient extends SVNAdminBasicClient
The SVNLookClient class provides API for examining different aspects of a Subversion repository. Its functionality is similar to the one of the Subversion command-line utility called svnlook. The following table matches methods of SVNLookClient to the corresponding commands of the svnlook utility (to make sense what its different methods are for):
SVNLookClient Subversion
doCat()'svnlook cat'
doGetAuthor()'svnlook author'
doGetChanged()'svnlook changed'
doGetChangedDirectories()'svnlook dirs-changed'
doGetDate()'svnlook date'
doGetDiff()'svnlook diff'
doGetHistory()'svnlook history'
doGetInfo()'svnlook info'
doGetLock()'svnlook lock'
doGetLog()'svnlook log'
doGetProperties()'svnlook proplist'
doGetProperty()'svnlook propget'
doGetRevisionProperties()'svnlook proplist --revprop'
doGetRevisionProperty()'svnlook propget --revprop'
doGetTree()'svnlook tree'
doGetUUID()'svnlook uuid'
doGetYoungestRevision()'svnlook youngest'
Since:
1.2
Version:
1.3
  • Field Details

  • Constructor Details

    • SVNLookClient

      public SVNLookClient(ISVNAuthenticationManager authManager, ISVNOptions options)
      Creates a new instance of SVNLookClient given an authentication manager and global options keeper.
      Parameters:
      authManager - a manager which provides authentication credentials
      options - a global config options provider
    • SVNLookClient

      public SVNLookClient(ISVNRepositoryPool repositoryPool, ISVNOptions options)
      Creates a new instance of SVNLookClient given an SVNRepository} drivers provider and global options keeper.
      Parameters:
      repositoryPool - a repository connectors keeper
      options - a global config options provider
    • SVNLookClient

      public SVNLookClient(SvnOperationFactory of)
  • Method Details

    • doGetInfo

      public SVNLogEntry doGetInfo(File repositoryRoot, SVNRevision revision) throws SVNException
      Retrieves author, timestamp and log message information from the repository for the given revision. This information is provided in a single SVNLogEntry object, that is only the following methods of SVNLogEntry return valid information:
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      Returns:
      revision info
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetInfo

      public SVNLogEntry doGetInfo(File repositoryRoot, String transactionName) throws SVNException
      Retrieves author, timestamp and log message information from the repository for the given transaction name. This information is provided in a single SVNLogEntry object, that is only the following methods of SVNLogEntry return valid information:
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      Returns:
      transaction info
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetYoungestRevision

      public long doGetYoungestRevision(File repositoryRoot) throws SVNException
      Returns the latest revision of the repository.
      Parameters:
      repositoryRoot - a repository root directory path
      Returns:
      a revision number
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetUUID

      public String doGetUUID(File repositoryRoot) throws SVNException
      Returns the uuid of the repository.
      Parameters:
      repositoryRoot - a repository root directory path
      Returns:
      an uuid
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetAuthor

      public String doGetAuthor(File repositoryRoot, SVNRevision revision) throws SVNException
      Returns author information for the given revision.
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      Returns:
      a revision author
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetAuthor

      public String doGetAuthor(File repositoryRoot, String transactionName) throws SVNException
      Returns author information for the given transaction.
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      Returns:
      a transaction owner
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doCat

      public void doCat(File repositoryRoot, String path, SVNRevision revision, OutputStream out) throws SVNException
      Fetches file contents for the specified revision and path. path must be absolute, that is it must start with '/'. The provided output stream is not closed within this method.
      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute file path
      revision - a revision number
      out - an output stream to write contents to
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found or is not a file
    • doCat

      public void doCat(File repositoryRoot, String path, String transactionName, OutputStream out) throws SVNException
      Fetches file contents for the specified path in the given transaction. path must be absolute, that is it must start with '/'. The provided output stream is not closed within this method.
      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute file path
      transactionName - a transaction name
      out - an output stream to write contents to
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found or is not a file
      • if the specified transaction is not found
    • doGetDate

      public Date doGetDate(File repositoryRoot, SVNRevision revision) throws SVNException
      Returns datestamp information for the given revision.
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      Returns:
      a datestamp
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetDate

      public Date doGetDate(File repositoryRoot, String transactionName) throws SVNException
      Returns datestamp information for the given transaction.
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      Returns:
      a datestamp
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetLog

      public String doGetLog(File repositoryRoot, SVNRevision revision) throws SVNException
      Returns log information for the given revision.
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      Returns:
      a log message
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetLog

      public String doGetLog(File repositoryRoot, String transactionName) throws SVNException
      Returns log information for the given transaction.
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      Returns:
      a log message
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetChanged

      public void doGetChanged(File repositoryRoot, SVNRevision revision, ISVNChangeEntryHandler handler, boolean includeCopyInfo) throws SVNException
      Traverses changed paths for the given revision invoking the passed handler on each changed path.
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      handler - a changed path handler
      includeCopyInfo - if true copy-from information is also provided for copied paths
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetChanged

      public void doGetChanged(File repositoryRoot, String transactionName, ISVNChangeEntryHandler handler, boolean includeCopyInfo) throws SVNException
      Traverses changed paths for the given transaction invoking the passed handler on each changed path.
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      handler - a changed path handler
      includeCopyInfo - if true copy-from information is also provided for copied paths
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetChangedDirectories

      public void doGetChangedDirectories(File repositoryRoot, SVNRevision revision, ISVNChangedDirectoriesHandler handler) throws SVNException
      Passes paths of directories changed in the given revision to the provided handler. Paths are absolute (start with '/').
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      handler - a path handler
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetChangedDirectories

      public void doGetChangedDirectories(File repositoryRoot, String transactionName, ISVNChangedDirectoriesHandler handler) throws SVNException
      Passes paths of directories changed in the given transaction to the provided handler. Paths are absolute (start with '/').
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      handler - a path handler
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetHistory

      public void doGetHistory(File repositoryRoot, String path, SVNRevision revision, boolean includeIDs, long limit, ISVNHistoryHandler handler) throws SVNException
      Passes history information for the specified path and revision to the provided handler. This information is provided as SVNAdminPath objects and include the following pieces: For history retrieval only these listed get methods of SVNAdminPath are relevant.

      path must be absolute, that is it must start with '/'. If path is null it defaults to "/".

      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      revision - a revision number
      includeIDs - if true a node revision id is also included for each path
      limit - maximum number of history entries; if <=0, then no limitation is applied and all history entries are reported
      handler - a history handler
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
    • doGetLock

      public SVNLock doGetLock(File repositoryRoot, String path) throws SVNException
      Retrieves lock information for the specified path. path must be absolute, that is it must start with '/'.
      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      Returns:
      an object containing details of a lock or null if the path is not locked
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
    • doGetTree

      public void doGetTree(File repositoryRoot, String path, SVNRevision revision, boolean includeIDs, boolean recursive, ISVNTreeHandler handler) throws SVNException
      Traverses repository tree starting at the specified path in the given revision and invoking the provided handler on each path. Path information is provided as SVNAdminPath objects and include the following pieces: For tree retrieval only these listed get methods of SVNAdminPath are relevant.

      path must be absolute, that is it must start with '/'. If path is null it defaults to "/".

      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      revision - a revision number
      includeIDs - if true a node revision id is also included for each path
      recursive - whether to descend recursively or operate on a single directory only
      handler - a tree handler
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
    • doGetTree

      public void doGetTree(File repositoryRoot, String path, String transactionName, boolean includeIDs, boolean recursive, ISVNTreeHandler handler) throws SVNException
      Traverses repository tree starting at the specified path in the given transaction and invoking the provided handler on each path. Path information is provided as SVNAdminPath objects and include the following pieces: For tree retrieval only these listed get methods of SVNAdminPath are relevant.

      path must be absolute, that is it must start with '/'. If path is null it defaults to "/".

      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      transactionName - a transaction name
      includeIDs - if true a node revision id is also included for each path
      recursive - whether to descend recursively or operate on a single directory only
      handler - a tree handler
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
      • if the specified transaction is not found
    • doGetDiff

      public void doGetDiff(File repositoryRoot, SVNRevision revision, boolean diffDeleted, boolean diffAdded, boolean diffCopyFrom, OutputStream os) throws SVNException
      Writes differences of changed files and properties for the given revision to the provided output stream. If no special diff generator was provided to this client a default GNU-style diff generator is used (which writes differences just like the 'svnlook diff' command).

      The provided output stream is not closed within this method.

      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      diffDeleted - if true differences for deleted files are included, otherwise not
      diffAdded - if true differences for added files are included, otherwise not
      diffCopyFrom - if true writes differences against the copy source (if any), otherwise not
      os - an output stream to write differences to
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetDiff

      public void doGetDiff(File repositoryRoot, String transactionName, boolean diffDeleted, boolean diffAdded, boolean diffCopyFrom, OutputStream os) throws SVNException
      Writes differences of changed files and properties for the given transaction to the provided output stream. If no special diff generator was provided to this client a default GNU-style diff generator is used (which writes differences just like the 'svnlook diff' command).
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      diffDeleted - if true differences for deleted files are included, otherwise not
      diffAdded - if true differences for added files are included, otherwise not
      diffCopyFrom - if true writes differences against the copy source (if any), otherwise not
      os - an output stream to write differences to
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetProperty

      public SVNPropertyValue doGetProperty(File repositoryRoot, String propName, String path, SVNRevision revision) throws SVNException
      Returns the value of a versioned property for the specified path in the given revision.

      path must be absolute, that is it must start with '/'.

      Parameters:
      repositoryRoot - a repository root directory path
      propName - a property name
      path - an absolute path
      revision - a revision number
      Returns:
      the value of a property
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
    • doGetProperties

      public SVNProperties doGetProperties(File repositoryRoot, String path, SVNRevision revision) throws SVNException
      Returns versioned properties for the specified path in the given revision.

      path must be absolute, that is it must start with '/'.

      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      revision - a revision number
      Returns:
      name (String) to value (String) mappings
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
    • doGetProperty

      public SVNPropertyValue doGetProperty(File repositoryRoot, String propName, String path, String transactionName) throws SVNException
      Returns the value of a versioned property for the specified path in the given transaction.

      path must be absolute, that is it must start with '/'.

      Parameters:
      repositoryRoot - a repository root directory path
      propName - a property name
      path - an absolute path
      transactionName - a transaction name
      Returns:
      the value of a property
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
      • if the specified transaction is not found
    • doGetProperties

      public SVNProperties doGetProperties(File repositoryRoot, String path, String transactionName) throws SVNException
      Returns versioned properties for the specified path in the given transaction.

      path must be absolute, that is it must start with '/'.

      Parameters:
      repositoryRoot - a repository root directory path
      path - an absolute path
      transactionName - a transaction name
      Returns:
      name (String) to value (String) mappings
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if path is not found
      • if the specified transaction is not found
    • doGetRevisionProperty

      public SVNPropertyValue doGetRevisionProperty(File repositoryRoot, String propName, SVNRevision revision) throws SVNException
      Returns the value of a revision property in the given revision.
      Parameters:
      repositoryRoot - a repository root directory path
      propName - a property name
      revision - a revision number
      Returns:
      the value of a revision property
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetRevisionProperties

      public SVNProperties doGetRevisionProperties(File repositoryRoot, SVNRevision revision) throws SVNException
      Returns revision properties in the given revision.
      Parameters:
      repositoryRoot - a repository root directory path
      revision - a revision number
      Returns:
      name (String) to value (String) mappings
      Throws:
      SVNException - no repository is found at repositoryRoot
    • doGetRevisionProperty

      public SVNPropertyValue doGetRevisionProperty(File repositoryRoot, String propName, String transactionName) throws SVNException
      Returns the value of a revision property for the given transaction.
      Parameters:
      repositoryRoot - a repository root directory path
      propName - a property name
      transactionName - a transaction name
      Returns:
      the value of a revision property
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetRevisionProperties

      public SVNProperties doGetRevisionProperties(File repositoryRoot, String transactionName) throws SVNException
      Returns revision properties for the given transaction.
      Parameters:
      repositoryRoot - a repository root directory path
      transactionName - a transaction name
      Returns:
      name (String) to value (String) mappings
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetFileSize

      public long doGetFileSize(File repositoryRoot, String path, String transactionName) throws SVNException
      Returns the size in bytes for the specified path in given transaction
      Parameters:
      repositoryRoot - a repository root directory path
      path - a path to the file inside the repository
      transactionName - a transaction name
      Returns:
      file size in bytes
      Throws:
      SVNException -
      • no repository is found at repositoryRoot
      • if the specified transaction is not found
    • doGetFileSize

      public long doGetFileSize(File repositoryRoot, String path, SVNRevision revision) throws SVNException
      Returns the size in bytes for the specified path in given revision
      Parameters:
      repositoryRoot - a repository root directory path
      path - a path to the file inside the repository
      revision - a revision
      Returns:
      file size in bytes
      Throws:
      SVNException - no repository is found at repositoryRoot
    • setDiffGenerator

      public void setDiffGenerator(ISVNGNUDiffGenerator diffGenerator)
      Sets a diff generator to be used in doGetDiff() methods of this class.
      Parameters:
      diffGenerator -
      See Also:
    • getDiffGenerator

      public ISVNGNUDiffGenerator getDiffGenerator()
      Returns a diff generator to be used in doGetDiff() methods of this class. If no generator was provided by a caller, SVNLookClient uses a default one that prints differences in a GNU-style.
      Returns:
      a diff generator
      See Also:
    • getTree

      private void getTree(FSFS fsfs, FSRoot root, String path, SVNNodeKind kind, FSID id, boolean includeIDs, int depth, boolean recursive, ISVNTreeHandler handler) throws SVNException
      Throws:
      SVNException
    • getProperties

      private SVNProperties getProperties(File repositoryRoot, String propName, String path, SVNRevision revision, String txnName, boolean singleProp, boolean revProps) throws SVNException
      Throws:
      SVNException
    • getHistory

      private void getHistory(FSFS fsfs, String path, long start, long end, long limit, boolean crossCopies, boolean includeIDs, ISVNHistoryHandler handler) throws SVNException
      Throws:
      SVNException
    • generateDeltaTree

      private SVNNodeEditor generateDeltaTree(FSFS fsfs, FSRoot root, long baseRevision) throws SVNException
      Throws:
      SVNException
    • catFile

      private void catFile(FSRoot root, String path, OutputStream out) throws SVNException
      Throws:
      SVNException
    • getFileSize

      private long getFileSize(FSRoot root, String path) throws SVNException
      Throws:
      SVNException
    • verifyPath

      private SVNNodeKind verifyPath(FSRoot root, String path) throws SVNException
      Throws:
      SVNException
    • open

      private FSFS open(File repositoryRoot, SVNRevision revision) throws SVNException
      Throws:
      SVNException
    • open

      private FSFS open(File repositoryRoot, String transactionName) throws SVNException
      Throws:
      SVNException