;--Doctest--

Uploading Distributions to Subversion

If you include grouparchy.setuptools in your setup_requires, then you can use the upload_svn command with your setup script to upload releases to a subversion repository.

>>> import os, sys
>>> argv = sys.argv
>>> sys.argv = [
...     script, 'sdist', 'upload_svn', '--svn-repository='+repo]
>>> execfile(script)
running sdist
running egg_info
creating foo.egg-info
writing foo.egg-info/PKG-INFO
writing top-level names to foo.egg-info/top_level.txt
writing dependency_links to foo.egg-info/dependency_links.txt
writing manifest file 'foo.egg-info/SOURCES.txt'
writing manifest file 'foo.egg-info/SOURCES.txt'
creating foo-0.0.0
creating foo-0.0.0/foo
creating foo-0.0.0/foo.egg-info
making hard links in foo-0.0.0...
hard linking README.txt -> foo-0.0.0
hard linking setup.py -> foo-0.0.0
hard linking foo/__init__.py -> foo-0.0.0/foo
hard linking foo.egg-info/PKG-INFO -> foo-0.0.0/foo.egg-info
hard linking foo.egg-info/SOURCES.txt -> foo-0.0.0/foo.egg-info
hard linking foo.egg-info/dependency_links.txt -> foo-0.0.0/foo.egg-info
hard linking foo.egg-info/top_level.txt -> foo-0.0.0/foo.egg-info
Writing foo-0.0.0/setup.cfg
creating dist
tar -cf dist/foo-0.0.0.tar foo-0.0.0
gzip -f9 dist/foo-0.0.0.tar
removing 'foo-0.0.0' (and everything under it)
running upload_svn
Submitting dist/foo-0.0.0.tar.gz to .../repo
svn import dist/foo-0.0.0.tar.gz .../repo/foo-0.0.0.tar.gz -m "distribution for foo"
Adding  (bin)  dist/foo-0.0.0.tar.gz
<BLANKLINE>
Committed revision 1.
<BLANKLINE>
>>> import subprocess
>>> p = subprocess.Popen(
...     ['svn ls %s' % repo], shell=True,
...     stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
>>> p.wait()
0
>>> print p.stdout.read(),
foo-0.0.0.tar.gz

svn errors should be reported up. Try to upload the same release to demonstrate.

>>> sys.argv = [
...     script, '-q', 'sdist', 'upload_svn',
...     '--svn-repository='+repo]
>>> try: execfile(script)
... except Exception, value: print value,
svn: Path '.../repo/foo-0.0.0.tar.gz' already exists

cleanup.

>>> sys.argv = argv