General VCS/SCM API

The VcsClient class provides a generic API for

class vcstools.VcsClient(vcs_type, path)

API for interacting with source-controlled paths independent of actual version-control implementation.

Parameters
  • vcs_type – type of VCS to use (e.g. ‘svn’, ‘hg’, ‘bzr’, ‘git’), str

  • path – filesystem path where code is/will be checked out , str

path_exists() → bool
Returns

True if path exists on disk.

get_path() → str
Returns

filesystem path this client is initialized with.

url_matches(self, url, url_or_shortcut) → bool

client can decide whether the url and the other url are equivalent. Checks string equality by default

Parameters

url_or_shortcut – url or shortcut (e.g. bzr launchpad url)

Returns

bool if params are equivalent

get_version([spec=None]) → str
Parameters

spec

token for identifying repository revision desired. Token might be a tagname, branchname, version-id, or SHA-ID depending on the VCS implementation.

  • svn: anything accepted by svn info --help, e.g. a revnumber, {date}, HEAD, BASE, PREV, or COMMITTED

  • git: anything accepted by git log, e.g. a tagname, branchname, or sha-id.

  • hg: anything accepted by hg log -r, e.g. a tagname, sha-ID, revision-number

  • bzr: revisionspec as returned by bzr help revisionspec, e.g. a tagname or revno:<number>

Returns

current revision number of the repository. Or if spec is provided, the globally unique identifier (e.g. revision number, or SHA-ID) of a revision specified by some token.

get_remote_version(self, fatch=False) → str

Find an identifier for the current revision on remote. Token spec might be a tagname, version-id, SHA-ID, … depending on the VCS implementation.

Parameters

fetch – if False, only local information may be used

Returns

current revision number of the remote repository.

get_current_version_label() → str

Find an description for the current local version. Token spec might be a branchname, version-id, SHA-ID, … depending on the VCS implementation.

returns

short description of local version (e.g. branchname, tagename).

checkout(url[, version=''][, verbose=False][, shallow=False])

Checkout the given URL to the path associated with this client.

Parameters
  • url – URL of source control to check out

  • version – specific version to check out

  • verbose – flag to run verbosely

  • shallow – flag to create shallow clone without history

update(version)

Update the local checkout from upstream source control.

detect_presence() → bool
Returns

True if path has a checkout with matching VCS type, e.g. if the type of this client is ‘svn’, the checkout at the path is managed by Subversion.

get_vcs_type_name() → str
Returns

type of VCS this client is initialized with.

get_url() → str
Returns

Upstream URL that this code was checked out from.

get_branch_parent()

(Git Only)

Returns

parent branch.

get_diff([basepath=None])
Parameters

basepath – compute diff relative to this path, if provided

Returns

A string showing local differences

get_status([basepath=None[, untracked=False]])

Calls scm status command. semantics of untracked are difficult to generalize. In SVN, this would be new files only. In git, hg, bzr, this would be changes that have not been added for commit.

Parameters
  • basepath – status path will be relative to this, if provided.

  • untracked – If True, also show changes that would not commit

Returns

A string summarizing locally modified files