light editing pass
This commit is contained in:
parent
9dbc639443
commit
504349a1e4
165
pep-0347.txt
165
pep-0347.txt
|
@ -15,140 +15,165 @@ Abstract
|
||||||
========
|
========
|
||||||
|
|
||||||
The Python source code is currently managed in a CVS repository on
|
The Python source code is currently managed in a CVS repository on
|
||||||
sourceforge.net. This PEP proposes to move it to a subversion repository
|
sourceforge.net. This PEP proposes to move it to a subversion
|
||||||
on svn.python.org.
|
repository on svn.python.org.
|
||||||
|
|
||||||
|
|
||||||
Rationale
|
Rationale
|
||||||
=========
|
=========
|
||||||
|
|
||||||
This change has two aspects: moving from CVS to subversion, and
|
This change has two aspects: moving from CVS to subversion, and moving
|
||||||
moving from SourceForge to python.org. For each, a rationale will
|
from SourceForge to python.org. For each, a rationale will be given.
|
||||||
be given.
|
|
||||||
|
|
||||||
Moving to Subversion
|
Moving to Subversion
|
||||||
--------------------
|
--------------------
|
||||||
CVS has a number of limitations that have been elimintation by
|
|
||||||
Subversion. For the development of Python, the most notable improvements
|
|
||||||
are:
|
|
||||||
|
|
||||||
- ability to rename files and directories, and to remove directories,
|
CVS has a number of limitations that have been elimintation by
|
||||||
while keeping the history of these files.
|
Subversion. For the development of Python, the most notable
|
||||||
|
improvements are:
|
||||||
|
|
||||||
|
- the ability to rename files and directories, and to remove
|
||||||
|
directories, while keeping the history of these files.
|
||||||
|
|
||||||
- support for change sets (sets of correlated changes to multiple
|
- support for change sets (sets of correlated changes to multiple
|
||||||
files) through global revision numbers.
|
files) through global revision numbers.
|
||||||
|
|
||||||
- support for offline diffs, which is useful when creating patches.
|
- support for offline diffs, which is useful when creating patches.
|
||||||
|
|
||||||
|
|
||||||
Moving to python.org
|
Moving to python.org
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
SourceForge has kindly provided an important infrastructure for the
|
SourceForge has kindly provided an important infrastructure for the
|
||||||
past years. Unfortunately, the attention that SF received has also
|
past years. Unfortunately, the attention that SF received has also
|
||||||
caused repeated overload situations in the past, to which the SF
|
caused repeated overload situations in the past, to which the SF
|
||||||
operators could not always respond in a timely manner. In particular,
|
operators could not always respond in a timely manner. In particular,
|
||||||
for CVS, they had to reduce the load on the primary CVS server by
|
for CVS, they had to reduce the load on the primary CVS server by
|
||||||
introducing a second, read-only CVS server for anonymous access.
|
introducing a second, read-only CVS server for anonymous access. This
|
||||||
This server is regularly synchronized, but behind the the read-write
|
server is regularly synchronized, but lags behind the the read-write
|
||||||
CVS repository between synchronizations. As a result, users without
|
CVS repository between synchronizations. As a result, users without
|
||||||
commit access can see recent changes to the repository only with
|
commit access can see recent changes to the repository only after a
|
||||||
a delay.
|
delay.
|
||||||
|
|
||||||
On python.org, it would be possible to make the repository accessible
|
On python.org, it would be possible to make the repository accessible
|
||||||
for anonymous access.
|
for anonymous access.
|
||||||
|
|
||||||
|
|
||||||
Migration Procedure
|
Migration Procedure
|
||||||
===================
|
===================
|
||||||
|
|
||||||
To move the Python CVS repository, the following steps need to be
|
To move the Python CVS repository, the following steps need to be
|
||||||
executed. The steps are elaborated in more detail in the next
|
executed. The steps are elaborated upon in the following sections.
|
||||||
sections.
|
|
||||||
|
1. Assign passwords for all current committers for use on
|
||||||
|
svn.python.org. User names on SF and svn.python.org should be
|
||||||
|
identical, unless some committer requests a different user name.
|
||||||
|
|
||||||
1. Assign passwords for all current committers for use on svn.python.org.
|
|
||||||
User names on SF and svn.python.org should be identical, unless some
|
|
||||||
committer requests a different user name.
|
|
||||||
2. At the beginning of the migration, announce that the repository on
|
2. At the beginning of the migration, announce that the repository on
|
||||||
SourceForge closed.
|
SourceForge closed.
|
||||||
|
|
||||||
3. 24 hours after the last commit, download the CVS repository.
|
3. 24 hours after the last commit, download the CVS repository.
|
||||||
4. Convert the CVS repository into two subversion repositories,
|
|
||||||
one for distutils and one for Python.
|
4. Convert the CVS repository into two Subversion repositories, one
|
||||||
5. Publish the repositories for write access for all committers,
|
for Distutils and one for Python.
|
||||||
and anonymous read access.
|
|
||||||
|
5. Publish the repositories with write access for committers, and
|
||||||
|
read-only anonymous access.
|
||||||
|
|
||||||
6. Disable CVS access on SF.
|
6. Disable CVS access on SF.
|
||||||
|
|
||||||
|
|
||||||
Assign Passwords
|
Assign Passwords
|
||||||
================
|
----------------
|
||||||
|
|
||||||
Currently, access to Subversion on svn.python.org uses WebDAV over
|
Currently, access to Subversion on svn.python.org uses WebDAV over
|
||||||
https, using basic authentication. For this to work, authorized
|
https, using basic authentication. For this to work, authorized users
|
||||||
users need to provide a password. This mechanism should be used,
|
need to provide a password. This mechanism should be used, at least
|
||||||
atleast initially, for the Python CVS as well, since various committers
|
initially, for the Python CVS as well, since various committers also
|
||||||
also have a username/password pair for the www SVN repository already.
|
have a username/password pair for the www SVN repository already.
|
||||||
|
|
||||||
Alternatives to password-based access include:
|
Alternatives to password-based access include:
|
||||||
|
|
||||||
- Subversion over SSH, using SSH key pairs. This would require
|
- Subversion over SSH, using SSH key pairs. This would require
|
||||||
to give committers accounts on the machine, which currently is
|
committers to be given accounts on the machine, which currently is
|
||||||
ruled out by the administration policy of svn.python.org.
|
ruled out by the administration policy of svn.python.org.
|
||||||
- Subversion over WebDAV, using SSL client certificates. This
|
|
||||||
would work, but would require to administrate a certificate
|
- Subversion over WebDAV, using SSL client certificates. This would
|
||||||
authority.
|
work, but would require to administrate a certificate authority.
|
||||||
|
|
||||||
|
|
||||||
Downloading the CVS Repository
|
Downloading the CVS Repository
|
||||||
==============================
|
------------------------------
|
||||||
|
|
||||||
The CVS repository can be downloaded from
|
The CVS repository can be downloaded from
|
||||||
|
|
||||||
http://cvs.sourceforge.net/cvstarballs/python-cvsroot.tar.bz2
|
http://cvs.sourceforge.net/cvstarballs/python-cvsroot.tar.bz2
|
||||||
|
|
||||||
|
Since this tarball is generated only once a day, some time must pass
|
||||||
|
after the repository freeze before the tarball can be picked up. It
|
||||||
|
should be verified that the last commit, as recorded on the
|
||||||
|
python-commits mailing list, is indeed included in the tarball.
|
||||||
|
|
||||||
Since this tarball is generated only once a day, some time after
|
|
||||||
the repository freeze must pass before the tarball can be picked
|
|
||||||
up. It should be verified that the last commit, as recorded on
|
|
||||||
the python-commits mailing list, is indeed included in the tarball.
|
|
||||||
|
|
||||||
Converting the CVS Repository
|
Converting the CVS Repository
|
||||||
=============================
|
-----------------------------
|
||||||
|
|
||||||
The Python CVS repository contains two modules: distutils and
|
The Python CVS repository contains two modules: distutils and python.
|
||||||
python. Keeping them together will produce quite long repository
|
Keeping them together will produce quite long repository URLs, so it
|
||||||
URLs, so it is more convenient if the Python CVS and the distutils
|
is more convenient if the Python CVS and the Distutils CVS are
|
||||||
CVS are converted into two separate repositories.
|
converted into two separate repositories.
|
||||||
|
|
||||||
As the repository format, fsfs should be used (requires Subversion 1.1).
|
Fsfs should be used as the repository format (requires Subversion
|
||||||
fsfs has the advantage of being more backup-friendly, as it allows to
|
1.1). Fsfs has the advantage of being more backup-friendly, as it
|
||||||
backup a repository incrementally, without requiring to run any dump
|
allows incremental repository backups, without requiring any dump
|
||||||
commands.
|
commands to be run.
|
||||||
|
|
||||||
The conversion should be done using cvs2svn utility, available e.g.
|
The conversion should be done using the cvs2svn utility, available
|
||||||
in the cvs2svn Debian package. The command for converting the Python
|
e.g. in the cvs2svn Debian package. The command for converting the
|
||||||
repository is
|
Python repository is ::
|
||||||
|
|
||||||
cvs2svn -q --encoding=latin1 --force-branch=cnri-16-start
|
cvs2svn -q --encoding=latin1 --force-branch=cnri-16-start \
|
||||||
--force-branch=descr-branch --force-branch=release152p1-patches
|
--force-branch=descr-branch --force-branch=release152p1-patches \
|
||||||
--force-tag=r16b1 --fs-type=fsfs -s py.svn.new python/python
|
--force-tag=r16b1 --fs-type=fsfs -s py.svn.new python/python
|
||||||
|
|
||||||
The command to convert the distutils repository is
|
The command to convert the distutils repository is ::
|
||||||
|
|
||||||
cvs2svn -q --encoding=latin1 --fs-type=fsfs -s dist.svn.new python/distutils
|
cvs2svn -q --encoding=latin1 --fs-type=fsfs -s dist.svn.new python/distutils
|
||||||
|
|
||||||
Sample results of this conversion are available at
|
Sample results of this conversion are available at
|
||||||
|
|
||||||
http://www.dcl.hpi.uni-potsdam.de/python/
|
| http://www.dcl.hpi.uni-potsdam.de/python/
|
||||||
http://www.dcl.hpi.uni-potsdam.de/distutils/
|
| http://www.dcl.hpi.uni-potsdam.de/distutils/
|
||||||
|
|
||||||
|
|
||||||
Publish the Repositories
|
Publish the Repositories
|
||||||
========================
|
------------------------
|
||||||
|
|
||||||
The repositories should be published at https://svn.python.org/python
|
The repositories should be published at https://svn.python.org/python
|
||||||
and https://svn.python.org/distutils. Read-write should be granted
|
and https://svn.python.org/distutils. Read-write access should be
|
||||||
through basic authentication to all current SF committers; read-only
|
granted through basic authentication to all current SF committers;
|
||||||
access should be granted anonymously. As an option, websvn (available
|
read-only anonymous access should also be granted. As an option,
|
||||||
e.g. from the Debian websvn package) could be provided.
|
websvn (available e.g. from the Debian websvn package) could be
|
||||||
|
provided.
|
||||||
|
|
||||||
The current SF project admins should get write access to the password
|
The current SF project admins should get write access to the password
|
||||||
file, in order to create or delete new users.
|
file, in order to create or delete new users.
|
||||||
|
|
||||||
|
|
||||||
Disable CVS
|
Disable CVS
|
||||||
===========
|
-----------
|
||||||
|
|
||||||
It appears that CVS cannot be disabled entirely. Only the user interface
|
It appears that CVS cannot be disabled entirely. Only the user
|
||||||
can be removed from the project page; the repository itself remains
|
interface can be removed from the project page; the repository itself
|
||||||
available. If desired, write access to the python and distutils modules
|
remains available. If desired, write access to the python and
|
||||||
can be disabled through a commitinfo entry.
|
distutils modules can be disabled through a CVS commitinfo entry.
|
||||||
|
|
||||||
|
|
||||||
|
..
|
||||||
|
Local Variables:
|
||||||
|
mode: indented-text
|
||||||
|
indent-tabs-mode: nil
|
||||||
|
sentence-end-double-space: t
|
||||||
|
fill-column: 70
|
||||||
|
End:
|
||||||
|
|
Loading…
Reference in New Issue