[haiku-development] Re: Finally deciding on a new source control system for Haiku

  • From: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 2 May 2011 08:29:06 +0200

Hi,

Writing 1 of 2 on this topic.

2011/5/1 Oliver Tappe <zooey@xxxxxxxxxxxxxxx>:
> 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.

Yes, this was my finding too.

> 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.

To counter that though: there is the hg-bookmarks extension which
works the same as git's local branching. (Literally, because git's
branches are just symbolic names of a certain changeset).

So that, for me, is not an argument to dismiss hg as a tool.

> 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.

But most of the errors for hg were a file permission problem,
indicating that either Haiku's file system, the POSIX part of Haiku,
or Python's glue to Haiku, or the hg test suite has a flaw. (The
latter is not unlikely because of the way the tests work).

So in this sense it seems to me that the choice will be less 'clear'
than envisioned. It really comes down to taste.

Regards,

N>

Other related posts: