• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. RBTools 5.x
    2. Version 5.x
    3. Version 4.x
    4. Version 3.x
    5. Version 2.0
    6. Version 1.0
    7. Version 0.7
    8. Version 0.6
    9. Version 0.5
    10. RBTools Python API
    11. Module and Class References
    12. rbtools.utils.source_tree
  • Home
  • Installing RBTools
  • rbt Command
  • Configuration
  • Authenticating to Review Board
  • Repository Configuration
  • Per-User Configuration
  • Team Foundation Server Configuration
  • Commands
  • alias
  • api-get
  • attach
  • clear-cache
  • close
  • diff
  • install
  • land
  • list-repo-types
  • login
  • logout
  • patch
  • post
  • publish
  • review
  • setup-completion
  • setup-repo
  • stamp
  • status
  • status-update
  • RBTools Workflows
  • Using RBTools With Cliosoft SOS
  • Using RBTools with Git
  • Using RBTools with HCL VersionVault and IBM ClearCase
  • Using RBTools With Perforce
  • RBTools Python API
  • Overview of the Python API Client
  • Tutorial
  • Resource-Specific Functionality
  • Module and Class References
  • rbtools
  • rbtools.deprecation
  • rbtools.api
  • rbtools.api.cache
  • rbtools.api.capabilities
  • rbtools.api.client
  • rbtools.api.decode
  • rbtools.api.decorators
  • rbtools.api.errors
  • rbtools.api.factory
  • rbtools.api.request
  • rbtools.api.resource
  • rbtools.api.transport
  • rbtools.api.transport.sync
  • rbtools.api.utils
  • rbtools.clients
  • rbtools.clients.base
  • rbtools.clients.base.patch
  • rbtools.clients.base.registry
  • rbtools.clients.base.repository
  • rbtools.clients.base.scmclient
  • rbtools.clients.errors
  • rbtools.clients.bazaar
  • rbtools.clients.clearcase
  • rbtools.clients.cvs
  • rbtools.clients.git
  • rbtools.clients.mercurial
  • rbtools.clients.perforce
  • rbtools.clients.plastic
  • rbtools.clients.sos
  • rbtools.clients.svn
  • rbtools.clients.tfs
  • rbtools.config
  • rbtools.config.config
  • rbtools.config.loader
  • rbtools.diffs
  • rbtools.diffs.patches
  • rbtools.diffs.patcher
  • rbtools.diffs.tools
  • rbtools.diffs.tools.backends
  • rbtools.diffs.tools.backends.gnu
  • rbtools.diffs.tools.base
  • rbtools.diffs.tools.base.diff_file_result
  • rbtools.diffs.tools.base.diff_tool
  • rbtools.diffs.tools.errors
  • rbtools.diffs.tools.registry
  • rbtools.diffs.writers
  • rbtools.commands
  • rbtools.commands.main
  • rbtools.commands
  • rbtools.commands.base
  • rbtools.commands.base.commands
  • rbtools.commands.base.errors
  • rbtools.commands.base.options
  • rbtools.commands.base.output
  • rbtools.commands.alias
  • rbtools.commands.api_get
  • rbtools.commands.attach
  • rbtools.commands.clearcache
  • rbtools.commands.close
  • rbtools.commands.diff
  • rbtools.commands.info
  • rbtools.commands.install
  • rbtools.commands.land
  • rbtools.commands.list_repo_types
  • rbtools.commands.login
  • rbtools.commands.logout
  • rbtools.commands.patch
  • rbtools.commands.post
  • rbtools.commands.publish
  • rbtools.commands.review
  • rbtools.commands.setup_completion
  • rbtools.commands.setup_repo
  • rbtools.commands.stamp
  • rbtools.commands.status
  • rbtools.commands.status_update
  • rbtools.hooks
  • rbtools.hooks.common
  • rbtools.hooks.git
  • rbtools.testing
  • rbtools.testing.api
  • rbtools.testing.api.payloads
  • rbtools.testing.api.transport
  • rbtools.testing.commands
  • rbtools.testing.testcase
  • rbtools.testing.transport
  • rbtools.utils
  • rbtools.utils.aliases
  • rbtools.utils.browser
  • rbtools.utils.checks
  • rbtools.utils.commands
  • rbtools.utils.console
  • rbtools.utils.diffs
  • rbtools.utils.encoding
  • rbtools.utils.errors
  • rbtools.utils.filesystem
  • rbtools.utils.graphs
  • rbtools.utils.mimetypes
  • rbtools.utils.process
  • rbtools.utils.repository
  • rbtools.utils.review_request
  • rbtools.utils.source_tree
  • rbtools.utils.users
  • Glossary
  • General Index
  • Python Module Index
  • Release Notes
  • rbtools.utils.source_tree¶

    Utilities for scanning and working with source trees.

    New in version 4.0.

    Functions

    scan_scmclients_for_path(path, *, ...[, ...])

    Scan and return information for SCMClients usable for a path.

    Classes

    SCMClientScanCandidate(scmclient[, local_path])

    A candidate found when scanning a source tree for SCMs.

    SCMClientScanResult(scmclient, local_path, ...)

    The result of a scan for SCMs in a tree.

    class rbtools.utils.source_tree.SCMClientScanCandidate(scmclient: BaseSCMClient, local_path: Optional[str] = None)[source]¶

    Bases: object

    A candidate found when scanning a source tree for SCMs.

    New in version 4.0.

    scmclient: BaseSCMClient¶

    The SCMClient that was matched.

    Type:

    rbtools.clients.base.scmclient.BaseSCMClient

    local_path: Optional[str] = None¶

    The local path on the filesystem for the match.

    This may be None.

    Type:

    str

    __dataclass_fields__ = {'local_path': Field(name='local_path',type='Optional[str]',default=None,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'scmclient': Field(name='scmclient',type='BaseSCMClient',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}¶
    __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False,match_args=True,kw_only=False,slots=False,weakref_slot=False)¶
    __eq__(other)¶

    Return self==value.

    __hash__ = None¶
    __init__(scmclient: BaseSCMClient, local_path: Optional[str] = None) → None¶
    __match_args__ = ('scmclient', 'local_path')¶
    __repr__()¶

    Return repr(self).

    class rbtools.utils.source_tree.SCMClientScanResult(scmclient: Optional[BaseSCMClient], local_path: Optional[str], repository_info: Optional[RepositoryInfo], candidates: List[SCMClientScanCandidate], dependency_errors: Dict[str, SCMClientDependencyError], scmclient_errors: Dict[str, Exception])[source]¶

    Bases: object

    The result of a scan for SCMs in a tree.

    New in version 4.0.

    scmclient: Optional[BaseSCMClient]¶

    The matching SCMClient, if found.

    This will be None if no suitable SCMClient was found for the tree.

    Type:

    rbtools.clients.base.scmclient.BaseSCMClient

    local_path: Optional[str]¶

    The matching local path on the filesystem, if found.

    This will be None if no suitable SCMClient was found for the tree, or if a repository was matched as remote-only.

    Type:

    str

    repository_info: Optional[RepositoryInfo]¶

    The matching repository information, if found.

    This will be None if no suitable SCMClient was found for the tree.

    Type:

    rbtools.clients.base.repository.RepositoryInfo

    candidates: List[SCMClientScanCandidate]¶

    A list of all possible candidates for the tree.

    The matching candidate will be a part of this list, if one was found.

    Type:

    list of SCMClientScanCandidate

    dependency_errors: Dict[str, SCMClientDependencyError]¶

    SCMClient dependency errors encountered during the scan.

    Each key will correspond to the BaseSCMClient.scmclient_id of the erroring SCMClient, and each value will be a SCMClientDependencyError containing further details.

    Type:

    dict

    scmclient_errors: Dict[str, Exception]¶

    Unexpected SCMClient errors encountered during the scan.

    Each key will correspond to the BaseSCMClient.scmclient_id of the erroring SCMClient, and each value will be an Exception subclass.

    Type:

    dict

    property found: bool[source]¶

    Whether a matching SCMClient was found.

    Type:

    bool

    __dataclass_fields__ = {'candidates': Field(name='candidates',type='SCMClientScanCandidateList',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'dependency_errors': Field(name='dependency_errors',type='SCMClientScanDependencyErrors',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'local_path': Field(name='local_path',type='Optional[str]',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'repository_info': Field(name='repository_info',type='Optional[RepositoryInfo]',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'scmclient': Field(name='scmclient',type='Optional[BaseSCMClient]',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'scmclient_errors': Field(name='scmclient_errors',type='SCMClientScanErrors',default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}¶
    __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False,match_args=True,kw_only=False,slots=False,weakref_slot=False)¶
    __eq__(other)¶

    Return self==value.

    __hash__ = None¶
    __init__(scmclient: Optional[BaseSCMClient], local_path: Optional[str], repository_info: Optional[RepositoryInfo], candidates: List[SCMClientScanCandidate], dependency_errors: Dict[str, SCMClientDependencyError], scmclient_errors: Dict[str, Exception]) → None¶
    __match_args__ = ('scmclient', 'local_path', 'repository_info', 'candidates', 'dependency_errors', 'scmclient_errors')¶
    __repr__()¶

    Return repr(self).

    rbtools.utils.source_tree.scan_scmclients_for_path(path: str, *, scmclient_kwargs: dict[str, Any], scmclient_ids: list[str] = [], check_remote: bool = True) → SCMClientScanResult[source]¶

    Scan and return information for SCMClients usable for a path.

    This looks for local source trees matching any supported SCMClient, starting at the provided path and working up toward the root of the filesystem. It will also by default check remote-only repositories, if the appropriate options are passed when instantiating each SCMClient.

    All candidates are recorded, which can be helpful with diagnosing a match (in the case of nested repositories). If there was at least one candidate found, the most likely match will be returned along with the candidates.

    Any errors encountered during matching will be logged and returned, to help with providing useful errors to the caller.

    New in version 4.0.

    Parameters:
    • path (str) – The starting path for the search.

    • scmclient_kwargs (dict) – Keyword arguments to pass when instantiating each SCMClient.

    • scmclient_ids (list of str, optional) –

      An explicit list of SCMClient IDs to try to use in the scan.

      If empty, this will try all registered SCMClients.

    • check_remote (bool, optional) –

      Whether to allow checking of remote repositories.

      This is dependent on support and logic within each SCMClient.

    Returns:

    The results of the SCMClient scan. This will never be None.

    Return type:

    SCMClientScanResult

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2025 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • SCMClientScanCandidate
      • SCMClientScanCandidate.scmclient
      • SCMClientScanCandidate.local_path
      • SCMClientScanCandidate.__dataclass_fields__
      • SCMClientScanCandidate.__dataclass_params__
      • SCMClientScanCandidate.__eq__()
      • SCMClientScanCandidate.__hash__
      • SCMClientScanCandidate.__init__()
      • SCMClientScanCandidate.__match_args__
      • SCMClientScanCandidate.__repr__()
    • SCMClientScanResult
      • SCMClientScanResult.scmclient
      • SCMClientScanResult.local_path
      • SCMClientScanResult.repository_info
      • SCMClientScanResult.candidates
      • SCMClientScanResult.dependency_errors
      • SCMClientScanResult.scmclient_errors
      • SCMClientScanResult.found
      • SCMClientScanResult.__dataclass_fields__
      • SCMClientScanResult.__dataclass_params__
      • SCMClientScanResult.__eq__()
      • SCMClientScanResult.__hash__
      • SCMClientScanResult.__init__()
      • SCMClientScanResult.__match_args__
      • SCMClientScanResult.__repr__()
    • scan_scmclients_for_path()