gp.vcsdevelop 2.2.3
ZC buildout extension to checkout eggs from various vcs
License: MIT
Keywords: buildout extension vcs develop

=============
gp.vcsdevelop
=============

.. contents::




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
  <http://pip.openplans.org/#requirements-files>`_'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 <http://bitbucket.org/gawel/gpvcsdevelop/issues/?status=new>`_ 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


Download
========