ZC buildout extension to checkout eggs from various vcs
Project description
What is gp.vcsdevelop ?
This package allow you to checkout some package and use them as developed eggs with zc.buildout.
Available options
develop-dir: a directory to checkout packages in
vcs-extend-develop: A list of vcs url. See pip’s editable parameter. Available schemes are ssh, svn, git, hg, bzr, sftp.
vcs-update:
If true on every run buildout try updating egg. As example for hg+https run hg pull -u
If always then remove existing code from filesystem and get a fresh checkout
requirements:
A path to a pip requirement file.
Usage
Basic usage
Use this package as a zc.buildout extension and provide some vcs urls in the vcs-extend-develop option:
>>> write('buildout.cfg',''' ... [buildout] ... extensions=gp.vcsdevelop ... vcs-extend-develop=hg+https://gawel@bitbucket.org/ianb/pip/@tip#egg=pip ... parts= ... ''')
Then if you run buildout, the package will be checkout from the repository:
>>> print 'Start', system(buildout) Start... Cloning hg https://gawel@bitbucket.org/ianb/pip/ (to revision tip) to ./pip Found command 'hg' at '...' Develop: '/...buildout/pip' ...
Packages can be found in the develop-dir (default to .). You can override this:
>>> write('buildout.cfg',''' ... [buildout] ... extensions=gp.vcsdevelop ... develop-dir=./src ... vcs-extend-develop=git+https://github.com/pypa/pip.git/@1.1#egg=pip ... parts= ... ''') >>> print 'Start', system(buildout) Start... Cloning https://github.com/pypa/pip.git/ (to 1.1) to ./src/pip Found command 'git' at '...' ... Develop: '/...buildout/./src/pip' ...
Non-python packages
You can also checkout non-python packages but you’ll get a warning:
>>> write('buildout.cfg',''' ... [buildout] ... extensions=gp.vcsdevelop ... develop-dir=./src ... vcs-extend-develop=git+git://github.com/benoitc/couchbeam.git#egg=couchbeam ... parts= ... ''') >>> print 'Start', system(buildout).strip() Start... Cloning git://github.com/benoitc/couchbeam.git to ./src/couchbeam Found command 'git' at '...' Warning: ./src/couchbeam is not a python package
Git submodules
gp.vcsdevelop is aware of Git’s submodules at the first level:
>>> write('buildout.cfg',''' ... [buildout] ... extensions=gp.vcsdevelop ... develop-dir=./src ... vcs-extend-develop=git+git://github.com/bearstech/PloneTerminal.git#egg=PloneTerminal ... parts= ... ''') >>> print 'Start', system(buildout).strip() Start... Cloning git://github.com/bearstech/PloneTerminal.git to ./src/PloneTerminal Found command 'git' at '...' Submodule 'jquery.terminal' (git://github.com/jcubic/jquery.terminal.git) registered for path 'ploneterminal/statics/jquery.terminal' <BLANKLINE> Cloning into ploneterminal/statics/jquery.terminal... Submodule path 'ploneterminal/statics/jquery.terminal': checked out '...' <BLANKLINE> Develop: '/...buildout/./src/PloneTerminal' ... >>> ls('src', 'PloneTerminal', 'ploneterminal', 'statics', 'jquery.terminal') d .git - CHANGELOG - README d css d examples d js d trypython
pip requirements file
gp.vcsdevelop can take care of your requirements file. All packages names contained by the requirements file can be found in a var named ${buildout:requirements-eggs}:
>>> write('buildout.cfg',''' ... [buildout] ... extensions=gp.vcsdevelop ... develop-dir=./requirements ... requirements = requirements.txt ... parts= eggs ... ... [eggs] ... recipe = zc.recipe.egg ... eggs = ${buildout:requirements-eggs} ... interpreter = python ... ''') >>> write('requirements.txt', ''' ... ConfigObject>=1.0 ... -e git+git://github.com/bearstech/PloneTerminal.git#egg=PloneTerminal ... ''') >>> print 'Start', system(buildout).strip() Start... Cloning git://github.com/bearstech/PloneTerminal.git to ./requirements/PloneTerminal Found command 'git' at '...' ... Develop: '/...buildout/./requirements/PloneTerminal' ... Generated interpreter '/...buildout/bin/python'. >>> print 'File', cat('bin', 'python') File... sys.path[0:0] = [ '.../ConfigObject-....egg', '/...buildout/requirements/PloneTerminal', ...
Bugs
Use the bitbucket tracker.
Changes
2.2 (12-07-2011)
use more pip api
add requirements option
2.1 (22-05-2011)
Take care of any .gitmodules found at package root
2.0 (20-05-2011)
No longer depends on pip. Use get-pip.py
1.9.4 (04-05-2011)
python3 ready
1.9.2 (04-01-2011)
require pip>=0.8
1.9.1 (22-08-2010)
add mercurial in require
1.9 (22-08-2010)
support latest pip
1.8 (06-08-2010)
always add svn scheme
1.7 (06-08-2010)
fix pip 0.8 compat
1.6 (13-05-2010)
require pip>=0.7.1
1.5 (17-02-2010)
rename vcsdevelop-update to vcs-update. can be set to always
1.4 (24-01-2010)
pip 0.6.3 compat by Boris Kocherov
1.3 (13-09-2009)
add vcsdevelop-update by Boris Kocherov
1.2 (24-08-2009)
allow to fetch non-python package
1.1 (29-06-2009)
add svn to vcs.schemes
0.4 (04-05-2009)
allow to have existing develop directories
0.2 (27-01-2009)
only take care of urls starting with a valid available scheme.
0.1 (23-01-2009)
nothing change