Skip to main content

sven is a library to help you put content in SVN

Project description

It requires `pysvn` which you will probably want to install system-wide.

Basic usage:

from sven.backend import SvnAccess
client = SvnAccess(my_svn_server_repo_uri, my_local_checkout_dir)

client.write('path/to/a/file/to/write', "Lovely content to be versioning!")
client.write('path/to/another/file', "Aw shucks, I'll version this too..",
msg="My commit message", kind='text/plain')

last_rev_int = client.last_changed_rev('path/to/another/file')

last_rev_int = last_rev_int - 1
from sven.exc import ResourceUnchanged
try:
earlier_version = client.read('path/to/another/file', rev=last_rev_int)
except ResourceUnchanged, exc:
last_rev_int = exc.last_change
earlier_version = client.read('path/to/another/file', rev=last_rev_int)

changelog = client.log('path/to/another/file', rev=last_rev_int)

Each `.write` writes the content to the path on the local filesystem's checkout
and then commits it to the repository. The workflow of one-write-per-commit is
by design and is not likely to change soon; if you need a different workflow,
you probably ought to just be using svn clients directly, anyway.

Currently sven does not help you set up an svn client or server. It assumes
you've already got a repository and checkout set up.

The formats returned by some of its methods (particularly .log and .ls) are
totally ad-hoc right now and strange; they'll probably be formalized sooner
or later.


New in version 0.2:


* Now with doctests!

* `SvnAccess.write` now supports an optional `update_after_write` argument.
If set to a True value, calls to .write will end with an `svn up` to
resynchronize the checkout with the repository. Default is False.

* `SvnAccess.__init__` now supports an optional `update_after_write` argument.
If set to a True value, all calls to .write will end with an `svn up`
even if .write is not sent a True `update_after_write` value. Default
is True, so if you are concerned with performance and willing to maintain
synchronicity on your own, you should explicitly set this to False.

* `SvnAccess.__init__` no longer executes a silent `os.chdir`.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sven-0.2.tar.gz (6.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page