rbtools.clients.clearcase¶
A client for ClearCase.
Classes
|
An entry in a changeset. |
|
A client for ClearCase. |
|
A representation of a ClearCase source code repository. |
- class rbtools.clients.clearcase.ChangesetEntry(root_path, old_path=None, new_path=None, old_oid=None, new_oid=None, op='modify', is_dir=False)[source]¶
Bases:
object
An entry in a changeset.
This is a helper class which wraps a changed element, and centralizes/caches various information about that element’s old and new revisions.
New in version 3.0.
- __init__(root_path, old_path=None, new_path=None, old_oid=None, new_oid=None, op='modify', is_dir=False)[source]¶
Initialize the changeset entry.
- Parameters:
root_path (
unicode
) – The root path of the view.old_path (
unicode
, optional) – The extended path of the “old” version of the element.new_path (
unicode
, optional) – The extended path of the “new” version of the element.old_oid (
unicode
, optional) – The OID of the “old” version of the element.new_oid (
unicode
, optional) – The OID of the “new” version of the element.op (
unicode
, optional) – The change operation.is_dir (
bool
, optional) – Whether the changeset entry represents a directory.
- class rbtools.clients.clearcase.ClearCaseClient(**kwargs)[source]¶
Bases:
BaseSCMClient
A client for ClearCase.
This is a wrapper around the clearcase tool that fetches repository information and generates compatible diffs. This client assumes that cygwin is installed on Windows.
- scmclient_id: str = 'clearcase'[source]¶
The unique ID of the client.
New in version 4.0: This will be required in RBTools 5.0.
- Type:
- server_tool_names: Optional[str] = 'ClearCase,VersionVault / ClearCase'[source]¶
A comma-separated list of SCMClient names on the server
New in version 3.0.
- Type:
- 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, orTrue
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.
- supports_patch_revert: bool = True[source]¶
Whether the SCM client supports reverting patches.
- Type:
- __init__(**kwargs)[source]¶
Initialize the client.
- Parameters:
**kwargs (
dict
) – Keyword arguments to pass through to the superclass.
- property host_properties: Optional[Dict[str, str]][source]¶
A dictionary containing host properties.
This will fetch the properties on first access, and cache for future usage.
The contents are the results of cleartool hostinfo -l, with the addition of:
- Keys:
Callers must call
setup()
orhas_dependencies()
before accessing this.They also must check for
None
responses and exceptions.Changed in version 4.0: Made this a lazily-loaded caching property.
- Type:
- Raises:
rbtools.clients.errors.SCMError – There was an error fetching host property information.
- check_dependencies() None [source]¶
Check whether all dependencies for the client are available.
This will check for cleartool in the path.
New in version 4.0.
- Raises:
rbtools.clients.errors.SCMClientDependencyError – cleartool 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:
- get_repository_info() Optional[RepositoryInfo] [source]¶
Return repository information for the current working tree.
- Returns:
The repository info structure.
- Return type:
- find_matching_server_repository(repositories)[source]¶
Find a match for the repository on the server.
- Parameters:
repositories (
rbtools.api.resource.ListResource
) – The fetched repositories.- Returns:
A 2-tuple of
ItemResource
. The first item is the matching repository, and the second is the repository info resource.- Return type:
- 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).
There are many different ways to generate diffs for ClearCase, because there are so many different workflows. This method serves more as a way to validate the passed-in arguments than actually parsing them in the way that other clients do.
- Parameters:
revisions (
list
ofstr
, optional) – A list of revisions as specified by the user.- Returns:
The parsed revision spec.
See
SCMClientRevisionSpec
for the format of this dictionary.This always populates
base
andtip
.- Return type:
- Raises:
rbtools.clients.errors.InvalidRevisionSpecError – The given revisions could not be parsed.
rbtools.clients.errors.TooManyRevisionsError – The specified revisions list contained too many revisions.
- diff(revisions: SCMClientRevisionSpec, *, include_files: List[str] = [], exclude_patterns: List[str] = [], no_renames: bool = False, repository_info: Optional[RepositoryInfo] = None, extra_args: List[str] = [], **kwargs) SCMClientDiffResult [source]¶
Perform a diff using the given revisions.
- Parameters:
revisions (
dict
) – A dictionary of revisions, as returned byparse_revision_spec()
.include_files (
list
ofunicode
, optional) – A list of files to whitelist during the diff generation.exclude_patterns (
list
ofunicode
, optional) – A list of shell-style glob patterns to blacklist during diff generation.repository_info (
ClearCaseRepositoryInfo
, optional) – The repository info structure.extra_args (
list
, unused) – Additional arguments to be passed to the diff generation. Unused for ClearCase.**kwargs (
dict
, optional) – Unused keyword arguments.
- Returns:
A dictionary containing the following keys:
diff
(bytes
):The contents of the diff to upload.
- Return type:
- class rbtools.clients.clearcase.ClearCaseRepositoryInfo(path, vobtag, tool=None)[source]¶
Bases:
RepositoryInfo
A representation of a ClearCase source code repository.
This version knows how to find a matching repository on the server even if the URLs differ.
- __init__(path, vobtag, tool=None)[source]¶
Initialize the repsitory info.
- Parameters:
path (
unicode
) – The path of the repository.vobtag (
unicode
) – The VOB tag for the repository.tool (
rbtools.clients.base.scmclient.BaseSCMClient
) – The SCM client.
- update_from_remote(repository, info)[source]¶
Update the info from a remote repository.
- Parameters:
repository (
rbtools.api.resource.ItemResource
) – The repository resource.info (
rbtools.api.resource.ItemResource
) – The repository info resource.
- find_server_repository_info(api_root)[source]¶
Find a matching repository on the server.
The point of this function is to find a repository on the server that matches self, even if the paths aren’t the same. (For example, if self uses an ‘http’ path, but the server uses a ‘file’ path for the same repository.) It does this by comparing the VOB’s name and uuid. If the repositories use the same path, you’ll get back self, otherwise you’ll get a different ClearCaseRepositoryInfo object (with a different path).
Deprecated since version 3.0: Commands which need to use the remote repository, or need data from the remote repository such as the base path, should set
needs_repository
.- Parameters:
api_root (
rbtools.api.resource.RootResource
) – The root resource for the Review Board server.- Returns:
The server-side information for this repository.
- Return type: