Giter VIP home page Giter VIP logo

setuptools-git's Introduction

Setuptools_git Manual
=====================

About
-----

This is a plugin for setuptools that enables git integration.  Once
installed, Setuptools can be told to include in a package distribution
all the files tracked by git.  This is an alternative to explicit
inclusion specifications with `MANIFEST.in`.

A package distribution here refers to a package that you create using
setup.py, ex:

  python setup.py sdist
  python setup.py bdist_rpm
  python setup.py bdist_egg

This package was formerly known as gitlsfiles.  The name change is the
result of an effort by the setuptools plugin developers to provide a
uniform naming convention.


Installation
------------

With easy_install:

  easy_install setuptools_git

Alternative manual installation:

  tar -zxvf setuptools_git-X.Y.Z.tar.gz
  cd setuptools_git-X.Y.Z
  python setup.py install

Where X.Y.Z is a version number.



Usage
-----

To activate this plugin, you must first package your python module
with `setup.py` and use setuptools.  The former is well documented in
the distutils manual:

  http://docs.python.org/dist/dist.html

To use setuptools instead of distutils, just edit `setup.py` and
change

  from distutils.core import setup

to
  
  from setuptools import setup, find_packages

When Setuptools builds a source package, it always includes all files
tracked by your revision control system, if it knows how to learn what
those files are.

When Setuptools builds a binary package, you can ask it to include all
files tracked by your revision control system, by adding these argument
to your invocation of `setup()`:

  setup(...,
    packages=find_packages(),
    include_package_data=True, 
    ...)

which will detect that a directory is a package if it contains a
`__init__.py` file.  Alternatively, you can do without `__init__.py`
files and tell Setuptools explicitly which packages to process:

  setup(...,
    packages=["a_package", "another_one"],
    include_package_data=True, 
    ...)

This plugin lets setuptools know what files are tracked by your git
revision control tool.  Setuptools ships with support for cvs and
subversion.  Other plugins like this one are available for bzr, darcs,
monotone, mercurial, and many others.

It might happen that you track files with your revision control system
that you don't want to include in your packages.  In that case, you
can prevent setuptools from packaging those files with a directive in
your `MANIFEST.in`, ex:

  exclude .gitignore
  recursive-exclude images *.xcf *.blend

In this example, we prevent setuptools from packaging `.gitignore` and
the Gimp and Blender source files found under the `images` directory.

Files to exclude from the package can also be listed in the `setup()`
directive.  To do the same as the MANIFEST.in above, do:

  setup(...,
    exclude_package_data = {'': ['.gitignore'], 
    			    'images': ['*.xcf', '*.blend']},
    ...)

Here is another example:

  setup(...,
    exclude_package_data = {'': ['.gitignore', 'artwork/*'],
                            'model': ['config.py']},
    ...)


Gotchas
-------

Be aware that for this module to work properly, git and the git
meta-data must be available.  That means that if someone tries to make
a package distribution out of a non-git distribution of yours, say a
tarball, setuptools will lack the information necessary to know which
files to include.  A similar problem will happen if someone clones
your git repository but does not install this plugin.

Resolving those problems is out of the scope of this plugin; you
should add relevant warnings to your documentation if those situations
are a concern to you.

You can make sure that anyone who clones your git repository and uses
your setup.py file has this plugin by adding a `setup_requires`
argument:

  setup(...,
    setup_requires = [ "setuptools_git >= 0.3", ],
    ...)
    

References
----------

How to distribute Python modules with Distutils:
  
  http://docs.python.org/dist/dist.html


Setuptools complete manual:

  http://peak.telecommunity.com/DevCenter/setuptools


Thanks to Zooko O'Whielacronx for many improvements to this
README.txt.

setuptools-git's People

Contributors

ygingras avatar wichert avatar

Stargazers

Vinay Sajip avatar

Watchers

Vinay Sajip avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.