Backends

Implemented Backends

Base Backend

Created on Apr 8, 2010

author:marcink,lukaszb
class vcs.backends.base.BaseChangeset

Each backend should implement it’s changeset representation.

Attributes

repository
repository object within which changeset exists
id
may be raw_id or i.e. for mercurial’s tip just tip
raw_id
raw changeset representation (i.e. full 40 length sha for git backend)
short_id
shortened (if apply) version of raw_id; it would be simple shortcut for raw_id[:12] for git/mercurial backends or same as raw_id for subversion
revision
revision number as integer
files
list of FileNode (Node with NodeKind.FILE) objects
dirs
list of DirNode (Node with NodeKind.DIR) objects
nodes
combined list of Node objects
author
author of the changeset, as unicode
message
message of the changeset, as unicode
parents
list of parent changesets
last
True if this is last changeset in repository, False otherwise; trying to access this attribute while there is no changesets would raise EmptyRepositoryError
get_file_changeset(path)

Returns last commit of the file at the given path.

get_file_content(path)

Returns content of the file at the given path.

get_file_history(path)

Returns history of file as reversed list of Changeset objects for which file at given path has been modified.

get_file_size(path)

Returns size of the file at the given path.

get_node(path)

Returns Node object from the given path.

Raises NodeDoesNotExistError:
 if there is no node at the given path
get_nodes(path)

Returns combined DirNode and FileNode objects list representing state of changeset at the given path.

Raises ChangesetError:
 if node at the given path is not instance of DirNode
walk(topurl='')

Similar to os.walk method. Insted of filesystem it walks through changeset starting at given topurl. Returns generator of tuples (topnode, dirnodes, filenodes).

class vcs.backends.base.BaseInMemoryChangeset(repository)

Represents differences between repository’s state (most recent head) and changes made in place.

Attributes

repository
repository object for this in-memory-changeset
added
list of FileNode objects marked as added
changed
list of FileNode objects marked as changed
removed
list of FileNode or RemovedFileNode objects marked to be removed
add(*filenodes)

Marks given FileNode objects as to be committed.

Raises:
  • NodeAlreadyExistsError – if node with same path exists at latest changeset
  • NodeAlreadyAddedError – if node with same path is already marked as added
change(*filenodes)

Marks given FileNode objects to be changed in next commit.

Raises:
  • EmptyRepositoryError – if there are no changesets yet
  • NodeAlreadyExistsError – if node with same path is already marked to be changed
  • NodeAlreadyRemovedError – if node with same path is already marked to be removed
  • NodeDoesNotExistError – if node doesn’t exist in latest changeset
  • NodeNotChangedError – if node hasn’t really be changed
commit(message, **kwargs)

Commits local (from working directory) changes and returns newly created Changeset. Updates repository’s revisions list.

Raises CommitError:
 if any error occurs while committing
get_ipaths()

Returns generator of paths from nodes marked as added, changed or removed.

get_paths()

Returns list of paths from nodes marked as added, changed or removed.

remove(*filenodes)

Marks given FileNode (or RemovedFileNode) objects to be removed in next commit.

Raises:
  • EmptyRepositoryError – if there are no changesets yet
  • NodeDoesNotExistError – if node does not exist in latest changeset
  • NodeAlreadyRemovedError – if node has been already marked to be removed
  • NodeAlreadyChangedError – if node has been already marked to be changed
reset()

Resets this instance to initial state (cleans added, changed and removed lists).

class vcs.backends.base.BaseRepository(repo_path, create=False, **kwargs)

Base Repository for final backends

Attributes

repo
object from external api
revisions
list of all available revisions’ ids, in ascending order
changesets
storage dict caching returned changesets
path
absolute path to the repository
branches
branches as list of changesets
tags
tags as list of changesets

Initializes repository. Raises RepositoryError if repository could not be find at the given repo_path or directory at repo_path exists and create is set to True.

Parameters:
  • repo_path – local path of the repository
  • create=False – if set to True, would try to craete repository.
  • src_url=None – if set, should be proper url from which repository would be cloned; requires create parameter to be set to True - raises RepositoryError if src_url is set and create evaluates to False
add(filenode, **kwargs)

Commit api function that will add given FileNode into this repository.

Raises:
  • NodeAlreadyExistsError – if there is a file with same path already in repository
  • NodeAlreadyAddedError – if given node is already marked as added
commit(message, **kwargs)

Persists current changes made on this repository and returns newly created changeset.

Raises NothingChangedError:
 if no changes has been made
get_changeset(revision=None)

Returns instance of Changeset class. If revision is None, most recenent changeset is returned.

Raises EmptyRepositoryError:
 if there are no revisions
get_changesets(limit=10, offset=None)

Return last n number of Changeset objects specified by limit attribute if None is given whole list of revisions is returned

Param :limit: int limit or None
Param :offset: int offset
get_state()

Returns dictionary with added, changed and removed lists containing FileNode objects.

is_valid()

Validates repository.

remove(filenode, **kwargs)

Commit api function that will remove given FileNode into this repository.

Raises:
  • EmptyRepositoryError – if there are no changesets yet
  • NodeDoesNotExistError – if there is no file with given path
class vcs.backends.base.BaseWorkdir(repository)

Working directory representation of single repository.

Attribute :repository: repository object of working directory
commit(message, **kwargs)

Commits local (from working directory) changes and returns newly created Changeset. Updates repository’s revisions list.

Raises CommitError:
 if any error occurs while committing
get_added()

Returns list of FileNode objects marked as new in working directory.

get_changed()

Returns list of FileNode objects changed in working directory.

get_removed()

Returns list of RemovedFileNode objects marked as removed in working directory.

get_status()

Returns dict with added, changed, removed and untracked lists.

get_untracked()

Returns list of FileNode objects which are present within working directory however are not tracked by repository.

update(revision=None)

Fetches content of the given revision and populates it within working directory.

Table Of Contents

Previous topic

Nodes

Next topic

Git Backend

This Page