[pypy-dev] implementing the additional repo migrations

Paolo Giarrusso pgiarrusso at mathematik.uni-marburg.de
Sat Feb 26 13:01:41 CET 2011


On Sat, Feb 26, 2011 at 10:29, Laura Creighton <lac at openend.se> wrote:
> I think we may have a more general problem, in that the flexibility of
> pypy should lead to massive experimentation, not only by ourselves but
> by third parties.  What then should we do with the experiments?  I'd like
> to find a way to keep the interesting ones around without making
> branching horribly slow.  I thought that having many separate repositories
> would go a long way to getting this, was this also a mistaken assumption?
DVCS allow you to give a different meaning to "many separate
repositories", which was not possible with SVN and which answers your
question. Namely, there is little reason why experiment branches
should be part of the same repo - you can just fork the project
through bitbucket tools and make changes on the fork. If and when the
fork is completed and useful, it can be pulled back, otherwise it just
stays separate.

With Hg the only problem is in storing N repositories on a computer
without storing N copies of the common history, which is a different
but related problem.

To make branching fast, hardlinks allow to share the history between
related repos, especially in Git but it seems also in Hg - search
"hardlink" in the hg(1) man page, and this extension:
http://mercurial.selenic.com/wiki/RelinkExtension
While I'm a fan of Hg, the Git repository layout seems intrinsically
better from this point of view: with Hg, as soon as you commit a
change to a file in a branch, the existing history of that file can't
be shared any more between the two repos (at least, it can't possibly
be shared through a hardlink; it doesn't seem they implement other
solutions, and it would be hard to do that in a way coherent with
their design). I've got no experience with Hg on huge projects, while
I have 8 branches of the Linux kernel laying around: the history of
each additional branches takes ~5M (compared to 450M for the history
of the main repo).

If the branch stays close enough, though, this might not be a problem, but YMMV.

Cheers,
-- 
Paolo Giarrusso - Ph.D. Student
http://www.informatik.uni-marburg.de/~pgiarrusso/



More information about the Pypy-dev mailing list