• 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.clients.tfs
  • 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.clients.tfs¶

    A client for Team Foundation Server.

    Classes

    BaseTFWrapper(*[, config, options])

    Base class for TF wrappers.

    TEEWrapper(**kwargs)

    Implementation wrapper for using Team Explorer Everywhere.

    TFExeWrapper(*[, config, options])

    Implementation wrapper for using VS2017's tf.exe.

    TFHelperWrapper(**kwargs)

    Implementation wrapper using our own helper.

    TFSClient(*args, **kwargs)

    A client for Team Foundation Server.

    class rbtools.clients.tfs.BaseTFWrapper(*, config: Optional[Dict[str, Any]] = None, options: Optional[Namespace] = None)[source]¶

    Bases: object

    Base class for TF wrappers.

    New in version 4.0.

    __init__(*, config: Optional[Dict[str, Any]] = None, options: Optional[Namespace] = None) → None[source]¶

    Initialize the wrapper.

    Parameters:
    • config (dict, optional) – The loaded configuration.

    • options (argparse.Namespace, optional) – The command line options.

    check_dependencies() → None[source]¶

    Check whether all dependencies for the client are available.

    By default, no dependencies are checked.

    get_local_path() → Optional[str][source]¶

    Return the local path to the working tree.

    Returns:

    The filesystem path of the repository on the client system.

    Return type:

    str

    get_repository_info() → Optional[RepositoryInfo][source]¶

    Return repository information for the current working tree.

    Returns:

    The repository info structure.

    Return type:

    rbtools.clients.base.repository.RepositoryInfo

    parse_revision_spec(revisions: List[str]) → SCMClientRevisionSpec[source]¶

    Parse the given revision spec.

    These will be used to generate the diffs to upload to Review Board (or print). The diff for review will include the changes in (base, tip], and the parent diff (if necessary) will include (parent, base].

    If a single revision is passed in, this will return the parent of that revision for “base” and the passed-in revision for “tip”.

    If zero revisions are passed in, this will return revisions relevant for the “current change” (changes in the work folder which have not yet been checked in).

    Parameters:

    revisions (list of str) –

    A list of revisions as specified by the user.

    Items in the list do not necessarily represent a single revision, since the user can use the TFS-native syntax of r1~r2. Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Returns:

    The parsed revision spec.

    See SCMClientRevisionSpec for the format of this dictionary.

    This always populates base and tip.

    Return type:

    dict

    Raises:
    • rbtools.clients.errors.TooManyRevisionsError – Too many revisions were specified.

    • rbtools.clients.errors.InvalidRevisionSpecError – The given revision spec could not be parsed.

    diff(*, client: TFSClient, revisions: SCMClientRevisionSpec, include_files: List[str], exclude_patterns: List[str]) → SCMClientDiffResult[source]¶

    Return the generated diff.

    Parameters:
    • client (TFSClient) – The client performing the diff.

    • revisions (dict) – A dictionary containing base and tip keys.

    • include_files (list) – A list of file paths to include in the diff.

    • exclude_patterns (list) – A list of file paths to exclude from the diff.

    • **kwargs (dict, unused) – Unused keyword arguments.

    Returns:

    A dictionary of diff results.

    See SCMClientDiffResult for the format of this dictionary.

    Return type:

    dict

    class rbtools.clients.tfs.TFExeWrapper(*, config: Optional[Dict[str, Any]] = None, options: Optional[Namespace] = None)[source]¶

    Bases: BaseTFWrapper

    Implementation wrapper for using VS2017’s tf.exe.

    REVISION_WORKING_COPY = '--rbtools-working-copy'[source]¶
    check_dependencies() → None[source]¶

    Check whether all dependencies for the client are available.

    This will check for tf.exe.

    Raises:

    rbtools.clients.errors.SCMClientDependencyError – A tf tool could not be found.

    get_local_path() → Optional[str][source]¶

    Return the local path to the working tree.

    Returns:

    The filesystem path of the repository on the client system.

    Return type:

    str

    get_repository_info() → Optional[RepositoryInfo][source]¶

    Return repository information for the current working tree.

    Returns:

    The repository info structure.

    Return type:

    rbtools.clients.base.repository.RepositoryInfo

    parse_revision_spec(revisions: List[str]) → SCMClientRevisionSpec[source]¶

    Parse the given revision spec.

    These will be used to generate the diffs to upload to Review Board (or print). The diff for review will include the changes in (base, tip], and the parent diff (if necessary) will include (parent, base].

    If a single revision is passed in, this will return the parent of that revision for “base” and the passed-in revision for “tip”.

    If zero revisions are passed in, this will return revisions relevant for the “current change” (changes in the work folder which have not yet been checked in).

    Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Parameters:

    revisions (list of str) –

    A list of revisions as specified by the user.

    Items in the list do not necessarily represent a single revision, since the user can use the TFS-native syntax of r1~r2. Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Returns:

    The parsed revision spec.

    See SCMClientRevisionSpec for the format of this dictionary.

    This always populates base and tip.

    Return type:

    dict

    Raises:
    • rbtools.clients.errors.TooManyRevisionsError – Too many revisions were specified.

    • rbtools.clients.errors.InvalidRevisionSpecError – The given revision spec could not be parsed.

    diff(*, client: TFSClient, revisions: SCMClientRevisionSpec, include_files: List[str], exclude_patterns: List[str]) → SCMClientDiffResult[source]¶

    Return the generated diff.

    Parameters:
    • client (TFSClient) – The client performing the diff.

    • revisions (dict) – A dictionary containing base and tip keys.

    • include_files (list) – A list of file paths to include in the diff.

    • exclude_patterns (list) – A list of file paths to exclude from the diff.

    Returns:

    A dictionary of diff results.

    See SCMClientDiffResult for the format of this dictionary.

    Return type:

    dict

    class rbtools.clients.tfs.TEEWrapper(**kwargs)[source]¶

    Bases: BaseTFWrapper

    Implementation wrapper for using Team Explorer Everywhere.

    REVISION_WORKING_COPY = '--rbtools-working-copy'[source]¶
    classmethod get_default_tf_locations(target_platform: str = 'darwin') → List[str][source]¶

    Return default locations for tf.cmd for the given platform.

    New in version 4.0.

    Parameters:

    target_platform (str) – The platform to return paths for.

    Returns:

    The list of possible platforms.

    Return type:

    list of str

    __init__(**kwargs) → None[source]¶

    Initialize the wrapper.

    Parameters:

    **kwargs (dict) – Keyword arguments to pass to the parent class.

    check_dependencies() → None[source]¶

    Check whether all dependencies for the client are available.

    This checks for the presence of tf or tf.cmd in known locations and in the system path.

    It will also include the --tf-cmd location, if provided.

    New in version 4.0.

    Raises:

    rbtools.clients.errors.SCMClientDependencyError – A tf tool could not be found.

    get_local_path() → Optional[str][source]¶

    Return the local path to the working tree.

    Returns:

    The filesystem path of the repository on the client system.

    Return type:

    str

    get_repository_info() → Optional[RepositoryInfo][source]¶

    Return repository information for the current working tree.

    Returns:

    The repository info structure.

    Return type:

    rbtools.clients.base.repository.RepositoryInfo

    parse_revision_spec(revisions: List[str]) → SCMClientRevisionSpec[source]¶

    Parse the given revision spec.

    These will be used to generate the diffs to upload to Review Board (or print). The diff for review will include the changes in (base, tip], and the parent diff (if necessary) will include (parent, base].

    If a single revision is passed in, this will return the parent of that revision for “base” and the passed-in revision for “tip”.

    If zero revisions are passed in, this will return revisions relevant for the “current change” (changes in the work folder which have not yet been checked in).

    Parameters:

    revisions (list of str) –

    A list of revisions as specified by the user.

    Items in the list do not necessarily represent a single revision, since the user can use the TFS-native syntax of r1~r2. Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Returns:

    The parsed revision spec.

    See SCMClientRevisionSpec for the format of this dictionary.

    This always populates base and tip.

    Return type:

    dict

    Raises:
    • rbtools.clients.errors.TooManyRevisionsError – Too many revisions were specified.

    • rbtools.clients.errors.InvalidRevisionSpecError – The given revision spec could not be parsed.

    diff(*, client: TFSClient, revisions: SCMClientRevisionSpec, include_files: List[str], exclude_patterns: List[str]) → SCMClientDiffResult[source]¶

    Return the generated diff.

    Parameters:
    • client (TFSClient) – The client performing the diff.

    • revisions (dict) – A dictionary containing base and tip keys.

    • include_files (list) – A list of file paths to include in the diff.

    • exclude_patterns (list) – A list of file paths to exclude from the diff.

    Returns:

    A dictionary of diff results.

    See SCMClientDiffResult for the format of this dictionary.

    parent_diff will always be None.

    Return type:

    dict

    class rbtools.clients.tfs.TFHelperWrapper(**kwargs)[source]¶

    Bases: BaseTFWrapper

    Implementation wrapper using our own helper.

    __init__(**kwargs) → None[source]¶

    Initialize the wrapper.

    Parameters:

    **kwargs (dict) – Keyword arguments to pass to the parent class.

    check_dependencies() → None[source]¶

    Check whether all dependencies for the client are available.

    This will check that java is installed, so the provided JAR file can be used.

    New in version 4.0.

    Raises:

    rbtools.clients.errors.SCMClientDependencyError – java could not be found.

    get_local_path() → Optional[str][source]¶

    Return the local path to the working tree.

    Returns:

    The filesystem path of the repository on the client system.

    Return type:

    str

    get_repository_info() → Optional[RepositoryInfo][source]¶

    Return repository information for the current working tree.

    Returns:

    The repository info structure.

    Return type:

    rbtools.clients.base.repository.RepositoryInfo

    parse_revision_spec(revisions: List[str]) → SCMClientRevisionSpec[source]¶

    Parse the given revision spec.

    These will be used to generate the diffs to upload to Review Board (or print). The diff for review will include the changes in (base, tip], and the parent diff (if necessary) will include (parent, base].

    If a single revision is passed in, this will return the parent of that revision for “base” and the passed-in revision for “tip”.

    If zero revisions are passed in, this will return revisions relevant for the “current change” (changes in the work folder which have not yet been checked in).

    Parameters:

    revisions (list of str) –

    A list of revisions as specified by the user.

    Items in the list do not necessarily represent a single revision, since the user can use the TFS-native syntax of r1~r2. Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Returns:

    The parsed revision spec.

    See SCMClientRevisionSpec for the format of this dictionary.

    This always populates base and tip.

    Return type:

    dict

    Raises:
    • rbtools.clients.errors.TooManyRevisionsError – Too many revisions were specified.

    • rbtools.clients.errors.InvalidRevisionSpecError – The given revision spec could not be parsed.

    diff(*, client: TFSClient, revisions: SCMClientRevisionSpec, include_files: List[str], exclude_patterns: List[str]) → SCMClientDiffResult[source]¶

    Return the generated diff.

    Parameters:
    • client (TFSClient) – The client performing the diff.

    • revisions (dict) – A dictionary containing base and tip keys.

    • include_files (list) – A list of file paths to include in the diff.

    • exclude_patterns (list) – A list of file paths to exclude from the diff.

    Returns:

    A dictionary of diff results.

    See SCMClientDiffResult for the format of this dictionary.

    Return type:

    dict

    Raises:

    rbtools.clients.errors.SCMError – Something failed when creating the diff.

    class rbtools.clients.tfs.TFSClient(*args, **kwargs)[source]¶

    Bases: BaseSCMClient

    A client for Team Foundation Server.

    scmclient_id: str = 'tfs'[source]¶

    The unique ID of the client.

    New in version 4.0: This will be required in RBTools 5.0.

    Type:

    str

    name: str = 'Team Foundation Server'[source]¶

    The name of the client.

    Type:

    str

    server_tool_names: ClassVar[Optional[str]] = 'Team Foundation Server'[source]¶

    A comma-separated list of SCMClient names on the server.

    New in version 3.0.

    Type:

    str

    server_tool_ids: ClassVar[Optional[List[str]]] = ['tfs'][source]¶

    A comma-separated list of SCMClient IDs on the server.

    This supersedes server_tool_names when running on a version of Review Board that supports passing tool IDs to the repositories list API.

    New in version 5.0.1.

    Type:

    str

    requires_diff_tool: Union[bool, List[str]] = True[source]¶

    Whether this tool requires a command line diff tool.

    This may be a boolean or a list.

    If a boolean, then this must be False if no command line tool is required, or True if any command line tool supported by RBTools is available (in which case the SCMClient is responsible for ensuring compatibility).

    If a list, then this must be a list of registered diff tool IDs that are compatible.

    New in version 4.0.

    Type:

    bool or list

    supports_diff_exclude_patterns: bool = True[source]¶

    Whether the SCM client supports excluding files from the diff.

    Type:

    bool

    supports_patch_revert: bool = True[source]¶

    Whether the SCM client supports reverting patches.

    Type:

    bool

    __init__(*args, **kwargs) → None[source]¶

    Initialize the client.

    Parameters:
    • *args (tuple) – Positional arguments to pass to the parent class.

    • **kwargs (dict) – Keyword arguments to pass to the parent class.

    property tf_wrapper: BaseTFWrapper[source]¶

    The wrapper used to communicate with a TF tool.

    Type:

    BaseTFWrapper

    check_dependencies() → None[source]¶

    Check whether all dependencies for the client are available.

    There are three different backends that can be used to access the underlying TFS repository. We try them in this order:

    • VS2017+ tf.exe

    • Our custom rb-tfs wrapper, built on the TFS Java SDK

    • Team Explorer Everywhere’s tf command

    This checks for each, setting underlying wrappers to communicate with whichever tool is found.

    If no tool is found, the raised exception will present the high-level possibilities.

    New in version 4.0.

    Raises:

    rbtools.clients.errors.SCMClientDependencyError – No suitable dependencies could be found.

    get_local_path() → Optional[str][source]¶

    Return the local path to the working tree.

    Returns:

    The filesystem path of the repository on the client system.

    Return type:

    str

    get_repository_info() → Optional[RepositoryInfo][source]¶

    Return repository information for the current working tree.

    Returns:

    The repository info structure.

    Return type:

    rbtools.clients.base.repository.RepositoryInfo

    parse_revision_spec(revisions: List[str] = []) → SCMClientRevisionSpec[source]¶

    Parse the given revision spec.

    These will be used to generate the diffs to upload to Review Board (or print). The diff for review will include the changes in (base, tip], and the parent diff (if necessary) will include (parent, base].

    If a single revision is passed in, this will return the parent of that revision for “base” and the passed-in revision for “tip”.

    If zero revisions are passed in, this will return revisions relevant for the “current change” (changes in the work folder which have not yet been checked in).

    Parameters:

    revisions (list of str, optional) – A list of revisions as specified by the user. Items in the list do not necessarily represent a single revision, since the user can use the TFS-native syntax of r1~r2. Versions passed in can be any versionspec, such as a changeset number, L-prefixed label name, W (latest workspace version), or T (latest upstream version).

    Returns:

    The parsed revision spec.

    See SCMClientRevisionSpec for the format of this dictionary.

    This always populates base and tip.

    Return type:

    dict

    Raises:
    • rbtools.clients.errors.TooManyRevisionsError – Too many revisions were specified.

    • rbtools.clients.errors.InvalidRevisionSpecError – The given revision spec could not be parsed.

    diff(revisions: SCMClientRevisionSpec, *, include_files: List[str] = [], exclude_patterns: List[str] = [], **kwargs) → SCMClientDiffResult[source]¶

    Return the generated diff.

    Parameters:
    • revisions (dict) – A dictionary containing base and tip keys.

    • include_files (list, optional) – A list of file paths to include in the diff.

    • exclude_patterns (list, optional) – A list of file paths to exclude from the diff.

    • **kwargs (dict, unused) – Unused keyword arguments.

    Returns:

    A dictionary of diff results.

    See SCMClientDiffResult for the format of this dictionary.

    Return type:

    dict

    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]
    • BaseTFWrapper
      • BaseTFWrapper.__init__()
      • BaseTFWrapper.check_dependencies()
      • BaseTFWrapper.get_local_path()
      • BaseTFWrapper.get_repository_info()
      • BaseTFWrapper.parse_revision_spec()
      • BaseTFWrapper.diff()
    • TFExeWrapper
      • TFExeWrapper.REVISION_WORKING_COPY
      • TFExeWrapper.check_dependencies()
      • TFExeWrapper.get_local_path()
      • TFExeWrapper.get_repository_info()
      • TFExeWrapper.parse_revision_spec()
      • TFExeWrapper.diff()
    • TEEWrapper
      • TEEWrapper.REVISION_WORKING_COPY
      • TEEWrapper.get_default_tf_locations()
      • TEEWrapper.__init__()
      • TEEWrapper.check_dependencies()
      • TEEWrapper.get_local_path()
      • TEEWrapper.get_repository_info()
      • TEEWrapper.parse_revision_spec()
      • TEEWrapper.diff()
    • TFHelperWrapper
      • TFHelperWrapper.__init__()
      • TFHelperWrapper.check_dependencies()
      • TFHelperWrapper.get_local_path()
      • TFHelperWrapper.get_repository_info()
      • TFHelperWrapper.parse_revision_spec()
      • TFHelperWrapper.diff()
    • TFSClient
      • TFSClient.scmclient_id
      • TFSClient.name
      • TFSClient.server_tool_names
      • TFSClient.server_tool_ids
      • TFSClient.requires_diff_tool
      • TFSClient.supports_diff_exclude_patterns
      • TFSClient.supports_patch_revert
      • TFSClient.__init__()
      • TFSClient.tf_wrapper
      • TFSClient.check_dependencies()
      • TFSClient.get_local_path()
      • TFSClient.get_repository_info()
      • TFSClient.parse_revision_spec()
      • TFSClient.diff()