mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
149 lines
5.1 KiB
ReStructuredText
149 lines
5.1 KiB
ReStructuredText
===========
|
|
Development
|
|
===========
|
|
|
|
Pull Requests
|
|
=============
|
|
|
|
- Submit Pull Requests against the `develop` branch.
|
|
- Provide a good description of what you're doing and why.
|
|
- Provide tests that cover your changes and try to run the tests locally first.
|
|
|
|
**Example**. Assuming you set up GitHub account, forked pip repository from
|
|
https://github.com/pypa/pip to your own page via web interface, and your
|
|
fork is located at https://github.com/yourname/pip
|
|
|
|
::
|
|
|
|
$ git clone git@github.com:pypa/pip.git
|
|
$ cd pip
|
|
# ...
|
|
$ git diff
|
|
$ git add <modified> ...
|
|
$ git status
|
|
$ git commit
|
|
|
|
You may reference relevant issues in commit messages (like #1259) to
|
|
make GitHub link issues and commits together, and with phrase like
|
|
"fixes #1259" you can even close relevant issues automatically. Now
|
|
push the changes to your fork::
|
|
|
|
$ git push git@github.com:yourname/pip.git
|
|
|
|
Open Pull Requests page at https://github.com/yourname/pip/pulls and
|
|
click "New pull request". That's it.
|
|
|
|
|
|
Automated Testing
|
|
=================
|
|
|
|
All pull requests and merges to 'develop' branch are tested in `Travis <https://travis-ci.org/>`_
|
|
based on our `.travis.yml file <https://github.com/pypa/pip/blob/develop/.travis.yml>`_.
|
|
|
|
Usually, a link to your specific travis build appears in pull requests, but if not,
|
|
you can find it on our `travis pull requests page <https://travis-ci.org/pypa/pip/pull_requests>`_
|
|
|
|
The only way to trigger Travis to run again for a pull request, is to submit another change to the pull branch.
|
|
|
|
We also have Jenkins CI that runs regularly for certain python versions on windows and centos.
|
|
|
|
Running tests
|
|
=============
|
|
|
|
OS Requirements: subversion, bazaar, git, and mercurial.
|
|
|
|
Python Requirements: tox or pytest, virtualenv, scripttest, and mock
|
|
|
|
Ways to run the tests locally:
|
|
|
|
::
|
|
|
|
$ tox -e py33 # The preferred way to run the tests, can use pyNN to
|
|
# run for a particular version or leave off the -e to
|
|
# run for all versions.
|
|
$ python setup.py test # Using the setuptools test plugin
|
|
$ py.test # Using py.test directly
|
|
$ tox # Using tox against pip's tox.ini
|
|
|
|
|
|
Getting Involved
|
|
================
|
|
|
|
The pip project welcomes help in the following ways:
|
|
|
|
- Making Pull Requests for code, tests, or docs.
|
|
- Commenting on open issues and pull requests.
|
|
- Helping to answer questions on the mailing list.
|
|
|
|
If you want to become an official maintainer, start by helping out.
|
|
|
|
Later, when you think you're ready, get in touch with one of the maintainers,
|
|
and they will initiate a vote.
|
|
|
|
Release Process
|
|
===============
|
|
|
|
This process includes virtualenv, since pip releases necessitate a virtualenv release.
|
|
|
|
As an example, the instructions assume we're releasing pip-1.4, and virtualenv-1.10.
|
|
|
|
1. Upgrade setuptools, if needed:
|
|
|
|
#. Upgrade setuptools in ``virtualenv/develop`` using the :ref:`Refresh virtualenv` process.
|
|
#. Create a pull request against ``pip/develop`` with a modified ``.travis.yml`` file that installs virtualenv from ``virtualenv/develop``, to confirm the travis builds are still passing.
|
|
|
|
2. Create Release branches:
|
|
|
|
#. Create ``pip/release-1.4`` branch.
|
|
#. In ``pip/develop``, change ``pip.version`` to '1.5.dev1'.
|
|
#. Create ``virtualenv/release-1.10`` branch.
|
|
#. In ``virtualenv/develop``, change ``virtualenv.version`` to '1.11.dev1'.
|
|
|
|
3. Prepare "rcX":
|
|
|
|
#. In ``pip/release-1.4``, change ``pip.version`` to '1.4rcX', and tag with '1.4rcX'.
|
|
#. Build a pip sdist from ``pip/release-1.4``, and build it into ``virtualenv/release-1.10`` using the :ref:`Refresh virtualenv` process.
|
|
#. In ``virtualenv/release-1.10``, change ``virtualenv.version`` to '1.10rcX', and tag with '1.10rcX'.
|
|
|
|
4. Announce ``pip-1.4rcX`` and ``virtualenv-1.10rcX`` with the :ref:`RC Install Instructions` and elicit feedback.
|
|
|
|
5. Apply fixes to 'rcX':
|
|
|
|
#. Apply fixes to ``pip/release-1.4`` and ``virtualenv/release-1.10``
|
|
#. Periodically merge fixes to ``pip/develop`` and ``virtualenv/develop``
|
|
|
|
6. Repeat #4 thru #6 if needed.
|
|
|
|
7. Final Release:
|
|
|
|
#. In ``pip/release-1.4``, change ``pip.version`` to '1.4', and tag with '1.4'.
|
|
#. Merge ``pip/release-1.4`` to ``pip/master``.
|
|
#. Build a pip sdist from ``pip/release-1.4``, and load it into ``virtualenv/release-1.10`` using the :ref:`Refresh virtualenv` process.
|
|
#. Merge ``vitualenv/release-1.10`` to ``virtualenv/develop``.
|
|
#. In ``virtualenv/release-1.10``, change ``virtualenv.version`` to '1.10', and tag with '1.10'.
|
|
#. Merge ``virtualenv/release-1.10`` to ``virtualenv/master``
|
|
#. Build and upload pip and virtualenv sdists to PyPI.
|
|
|
|
.. _`Refresh virtualenv`:
|
|
|
|
Refresh virtualenv
|
|
++++++++++++++++++
|
|
|
|
#. Update the embedded versions of pip and setuptools in ``virtualenv_support``.
|
|
#. Run ``bin/rebuild-script.py`` to rebuild virtualenv based on the latest versions.
|
|
|
|
|
|
.. _`RC Install Instructions`:
|
|
|
|
RC Install Instructions
|
|
+++++++++++++++++++++++
|
|
|
|
::
|
|
|
|
$ curl -L -O https://github.com/pypa/virtualenv/archive/1.10rc1.tar.gz
|
|
$ echo "<md5sum value> 1.10rc1.tar.gz" | md5sum -c
|
|
1.10rc1.tar.gz: OK
|
|
$ tar zxf 1.10rc1.tar.gz
|
|
$ python virtualenv-1.10rc1/virtualenv.py myVE
|
|
$ myVE/bin/pip install SomePackage
|
|
|