
General Information
===================
 * URL: http://incubator.apache.org/libcloud/devinfo.html

Git Repositories
===================
 * Official Git Mirror:  git://git.apache.org/libcloud.git
 * Github Mirror:        git://github.com/apache/libcloud.git

Using The Git-SVN Bridge (For Committers)
=========================================

 $ git clone git://git.apache.org/libcloud libcloud
 $ cd libcloud

 $ curl http://git.apache.org/authors.txt > .git/authors.txt
 $ git config svn.authorsfile ".git/authors.txt"

 # Optionally, set your Apache commiter info, if different from global
 $ git config user.name "Your Name"
 $ git config user.email "you@example.org"

 $ git svn init \
       --prefix=origin/ \
       --tags=tags \
       --trunk=trunk \
       --branches=branches \
       https://svn.apache.org/repos/asf/incubator/libcloud

 $ git svn rebase

 To push commits back to SVN:
 $ git svn dcommit

Testing
=======

 Libcloud includes an example secrets.py file at:
  test/secrets.py-dist

 To run the test cases, you most likely want to run:
  $ cp test/secrets.py-dist  test/secrets.py

 This is done to prevent accidental commits of a developers provider credentials.

 To run all suites:

  libcloud$ python setup.py test
  running test
  ................................................................................................
  ----------------------------------------------------------------------
  Ran 96 tests in 0.182s

  OK

 To run specific tests:

  libcloud$ PYTHONPATH=. python test/compute/test_base.py
  .......
  ----------------------------------------------------------------------
  Ran 7 tests in 0.001s

  OK

Making a release
=======
 
 We have a script that runs the required setup.py commands and then hashes
 and signs the files.  To run it:

    cd dist
    ./release.sh -u yourusername@apache.org

 This should result in a set of apache-libcloud-${VERSION}.{tar.bz2,zip}{,asc,md5,sha1}
 files that are suitable to be uploaded for a release.
