# webkitscmpy

Provides a utilities for interacting with a git or svn repository.

## Requirements

- webkitcorepy
- fasteners
- monotonic
- xmltodict

## Command Line

The `git-webkit` command supports a common set of basic repository manipulations. Most notably:

`git-webkit find <ref>`: Print out commit information for a git ref, Subversion revision or identifier.

`git-webkit checkout <ref>`: Move the current local repository to the provided git ref, Subversion revision or identifier.

`git-webkit canonicalize`: Standardize commit authorship and put identifiers into the commit message.

## Usage

The `webkitscmpy` library provides a repository abstraction for both local and remote repositories. To instantiate a
repository object, use the `local.Scm.from_path` and `remote.Scm.from_url` functions.

```
from webkitscmpy import local, remote

on_disk = local.Scm.from_path(<path>)
subversion = remote.Scm.from_url('https://svn.webkit.org/repository/webkit')
github = remote.Scm.from_url('https://github.com/WebKit/WebKit')
```

While the abstraction layer is consistent for all implementations not all implementation support every feature. For
example, remote repositories do not have a `checkout` command available.

Each repository keeps a list of contributors, which can be primed and passed into the repository object:

```
from webkitscmpy import local, Contributor
contributors = Contributor.Mapping()
contributors.create('Jonathan Bedard', 'jbedard@apple.com')
local.Scm.from_path(<path>, contributors=contributors)
```
