[pypy-dev] Switching to a distributed version control system

Ondrej Certik ondrej at certik.cz
Fri Sep 19 16:32:38 CEST 2008


On Sat, Sep 13, 2008 at 9:32 PM, Sebastien Douche <sdouche at gmail.com> wrote:
> On Fri, Sep 12, 2008 at 00:13, Jacob Hallén <jacob at openend.se> wrote:
>> There are, in my opinion, 3 viable choices of DVCS for PyPy:
>>
>> - git
>>
>> - hg (mercurial)
>>
>> - bzr
>
> Hi there :)
>
>> I think they would all be an improvement over SVN and they all have their
>> strengths and weaknesses. In favour of bzr and hg is the fact that they are
>> written in Python, with core parts in C. Git is all C. Git currently requires
>> a cygwin environment to run on Windows, hg and bzr appear to have native
>> windows versions. Git  is the fastest of the lot with hg in second place. Bzr
>> is still a fair bit slower, though this is being worked on. Hg is really good
>> at keeping the repositories small, with git in second place.
>
> Excellent quick guide : http://www.infoq.com/articles/dvcs-guide
>
>> The strongest argument in favour of git seems to me to be the rebase feature,
>> which allows one to make a branch for a new feature, work on the branch and
>> then update the base of the branch to branch off at a later point in time. I
>> haven't identified this feature in hg and bzr, but then I haven't read all
>> the documentation in detail.
>
> Don't miss "extensions" (but these are officials, include in core):
>
> - Bisec
> http://www.selenic.com/mercurial/wiki/index.cgi/BisectExtension
>
> - Graph log (show grah of the tree, "ascii art")
> http://www.selenic.com/mercurial/wiki/index.cgi/GraphlogExtension
>
> - Hgk (same above, but with tcl/tk, copy of git's one)
> http://www.selenic.com/mercurial/wiki/index.cgi/HgkExtension
>
> - Mq (wonderfull Hg version of "quilt', must have!)
> http://www.selenic.com/mercurial/wiki/index.cgi/MqExtension
>
> -  Rebase (warning: available only to the next stable version)
> http://www.selenic.com/mercurial/wiki/index.cgi/RebaseExtension
>
> - Transplant ("transplant" patches from another branch or repositor)
> http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension
>
>> The one feature of svn that we would miss is the inclusion of foreign version
>> controlled trees, like we do with the pylib tree.
>
> Do you means externals? The features provided by externals in
> Subversion are not currently available in Mercurial,
> NestedRepositories is a proposal to integrate this extension into
> Mercurial:
> http://www.selenic.com/mercurial/wiki/index.cgi/NestedRepositories


And here is a translation table to git if you later decide (like us:)
that git is better for you:

http://wiki.sympy.org/wiki/Git_hg_rosetta_stone

Also git has the excellent "git svn", so you can use git with pypy
right now and commit using svn (git svn dcommit).

Ondrej


More information about the Pypy-dev mailing list