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

Sebastien Douche sdouche at gmail.com
Sat Sep 13 21:32:06 CEST 2008


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



-- 
Seb



More information about the Pypy-dev mailing list