On 2011-04-30 at 20:44:17 [+0200], Ryan Leavengood <leavengood@xxxxxxxxx> wrote: > Some time ago a "committee" was created to evaluate the options for a > new source control system for Haiku. I suppose our existing system, > Subversion, was also considered but I think the general consensus is > that SVN no longer serves the Haiku project well as a source control > system. > > As I recall the contenders were Git, Mercurial, and Bazaar. Could we > finally hear some results from this committee? As I recall at least > Oliver Tappe and Niels Reedijk were members of this committee. That's right. > I and others like me really think we should get a new distributed > source control system sooner rather than later. While I am a fan of > Git, all of the above distributed systems would provide easier > branching for releases, easier patch management for contributors, > easier development for non-contributors, and also much easier > development for our GSoC students. > > The longer we stay with Subversion the more pain we will have in doing > another release and in managing the contributions from GSoC students. > > If I don't hear something from this committee by May 9 I will initiate > a vote on this list to decide the new system, with as best a list I > can put together of the advantages and disadvantages of the above > systems. But obviously the advice and opinions of the committee would > be appreciated. We have discussed this enough ([1], [2], [3], [4]), > and I think it is time we make a decision and make it happen. It has > been almost a year since Oliver started the discussion on this issue. > > One other thing to consider is that moving to one or the other system > now does not mean we are stuck with that choice forever. Most systems > can import and export to each other. But there is a considerable amount of administrative work (on the server and locally by every developer) required in order to do a server-side switch between version control systems. So, we surely won't be stuck, but we should try to avoid wrong paths, if possible. Last time I heard of him, Niels was in the process of preparing the committee writeup, but that's a while ago. We (Niels and me) weren't really able to agree on which DVCS to suggest as the preferred one for Haiku. Here's my own view on: Bazaar simply isn't up to the task, I was unable (and Niels, too, IIRC) to import our subversion repository into a bazaar repo. The import takes ages, eats a horrific amount of memory and in the end seems to get confused by the subversion repo's trunk having moved around. From the remaining two, both Mercurial and Git are certainly capable of importing our svn repo and handling it as expected. In terms of qualityt, there's not much difference between hg and git - they are good at what they do. Considering the tools' default workflow, hg has a big performance penalty on Haiku, as with hg a local branch is *usually* done by cloning (copying) the repository locally. When possible, hg simplifies that process by using hard links, but these aren't supported by BFS (as of now). As a result, doing a branch of Haiku's repo takes several minutes, whereas with git it's instantaneous. In general, I believe that git's default way of doing things (what is described in the available tutorials) matches our workflow better than hg's default. Most particularly, git's default is to *not* push any local branches to the server, but hg's default is to do exactly that (with named branches). However, we do not want branches of each developer being pushed to our central git repo. Developers can publish their branches via some of the public git/hg hosting sites and others can pull from there, that's one major point of a DVCS. On top of that, there is hg's dependency on Python, which isn't known to work reliably on Haiku, but that point is somewhat weakened by the fact that git depends on not only Perl but on Python, too. I expect that git uses python only for some of the more obscure actions, but I don't know for sure. Git's testsuite looks more promising on Haiku than Mercurial's though. Finally, there's an easy way to establish "central" revision numbers with git, too. That's why from my POV, git is the way to go. cheers, Oliver