[Pyrex] Source Control System

Robert Bradshaw robertwb at math.washington.edu
Sat Oct 13 08:45:29 CEST 2007


On Oct 12, 2007, at 10:01 AM, Nicholas Bastin wrote:

> On 12 Oct , 2007, at 12:48 , Gustavo Sverzut Barbieri wrote:
>
>> As for SVN, it's an improvement, but I beg you to use a distributed
>> system (git, mercurial, bazar, ...) if you want to have a read-only
>> online repository, it will make easier for us to help and keep track
>> of changes. (we can also use the tool, instead of keeping our patches
>> in another tool like quilt, or other repository).
>
> If you have access to a central server, there's no reason not to use
> svn.  IMO, the only reason to use a tool like git is if you don't
> have a central server with reasonable levels of access control.
> (Allow people to work on their own branches, but not merge to the
> release branches).

Even if one has access to a central server, there are several  
advantages to using a distributed revision control system, several of  
which I think are especially relevant to Pyrex as listed below:

Greg, correct me if I'm wrong, but I doubt you want the burden of  
maintaining a central server (no matter how low the workload), let  
alone one hosting several other peoples personal and experimental  
branches. A distributed system also makes much more sense as there  
are now (at least) two distributions--Pyrex and Cython--maintained by  
different people with different goals and workflows but still much  
overlap. Being able to pass changes back and forth will be mutually  
beneficial, especially for things like bugfixes. On this point I  
would argue that mercurial (which has been plenty fast for us on the  
same codebase) would be a good choice for maximal interoperability  
with the currently existing Cython repository, though any distributed  
versioning system that can easily import and export patches would  
work. (Another plug is that mercurial is written in Python, which  
your are obviously intimately familiar with. Some people really like  
GIT too, though I don't have much experience with it myself.) Picking  
and choosing patches out of a branch is much more difficult with a  
centralize system. The distributed way, ou would only pull in the  
changes you want into your repo. Also, in terms of your concerns  
about resource-forks, a distributed system would typically have far  
fewer issues--the set of files you are editing *is* the repository,  
there's no remote repository that you're syncing with all the time.  
For example, with mercurial, type "hg init" and you now have a  
repository in your working directory (with the history and comments  
stored in an (invisible) .hg file). When you make some changes, type  
"hg commit" to save them to the repo. You can back it up by simply  
dragging the whole folder onto your zip drive like you do now and  
publish the history by releasing the .hg repository with the Pyrex  
sources (much easier than publishing a cvs or svn history for  
instance). I think I have said enough...

A lot of people have expressed interest in your using a revision  
control system, but as I have a large vested interest in you doing so  
(It would help immensely in keeping Cython as compatible as possible  
with Pyrex, and hopefully merging my improvements, at your  
discretion, back to you) I would be willing to personally help you  
set this up if you want (we actually already have a repository of  
0.9.4.1a -> 0.9.5.1a -> 0.9.6.2 we've used to try and merge in your  
changes into ours).

- Robert




More information about the Pyrex mailing list