[ros-dev] DVCS again [was: Trunk locked]

Sir Gallantmon ngompa13 at gmail.com
Sun Nov 29 04:54:00 CET 2009


On Sat, Nov 28, 2009 at 9:08 PM, Colin Finck <mail at colinfinck.de> wrote:

> Zachary Gorden wrote:
> > This is common practice before a release and has been done for at least
> > the last year or so.
>
> You make it sound like locking the whole trunk and making the majority of
> developers unable to work properly is a state we want to keep.
> Of course, this has mostly been done due to having no alternatives when
> using Subversion and our urgent need to fix these blockers. But still, it's
> generally the worst possible action I can think of when it comes to
> collaborating on Open-Source projects...
>
> ... which raises the question about switching to a distributed version
> control system for me again.
>
> While Subversion has proven to be a viable solution for most of our needs,
> we still have to cope with its drawbacks from time to time.
> The major ones I can think of include:
>
>  * Build breakages in trunk prevent other developers from working.
>
>    Although some devs might have already get used to occasional build
>    breaks, this could become a bigger problem when, for example, two
>    developers constantly commit to a common component and update their
>    working copies afterwards.
>    They would immediately be forced to stop their work and wait for a fix,
>    when a build break occurs, even if it's lying in a completely different
>    component.
>
>    With Git or Mercurial, we could make wholly different workflows
>    possible here. A better one might be that each developer only works on
>    their own branches (which can be local and/or remote).
>    Optionally, two or more developers working on the same component could
>    also commit to a common branch, but still independent of the trunk or
>    master branch. If one needs stuff from a different branch, he can
>    easily merge single commits or fetch all changes from a branch.
>
>    Though SVN of course also provides branches, merging is far away from
>    being a transparent and trivial task there. I guess that the devs, who
>    often deal with our SVN branches, can confirm this.
>    Git or Mercurial solve this task way better.
>
>
>  * Not all commits in trunk are well-tested and easily make it unstable.
>
>    The recent locking of trunk again showed that it's still a place where
>    every trusted dev can, roughly speaking, commit whatever he wants.
>    It should be obvious that this leads to unexpected problems from time
>    to time.
>    Many people might also well remember the GL case, when the drastic
>    action of limiting one developer's SVN write access to branches was
>    done to prevent him from committing possibly problematic stuff to
>    trunk.
>
>    Using the branch workflow as described above would circumvent both
>    problems and even make trunk an unattractive place to work on.
>    If people have their own branches, where they can do everything they
>    want, to prepare a big change (e.g. that network locking rewrite),
>    nobody should ever need to work directly on trunk again.
>    We would just need to establish new rules or methods to get commits
>    from the branches into the trunk/master branch. Maybe a combination of
>    automatic and manual testing (depending on the situation) can help us
>    here.
>
> Such problems will turn out to be more severe with the raising number of
> developers.
>
> While this topic has already been partly discussed last year, the
> comfortable Windows support (= TortoiseSVN-like shell extensions) for both
> Git and Mercurial was still in very early stages of development at that
> time.
> This situation has improved much in the meantime. TortoiseGit and
> TortoiseHg should both provide most of the functions we need.
>
> The differences between Git&TortoiseGit and Mercurial&TortoiseHg lie more
> in the general concepts.
>
> As Git was designed with Unix principles in mind, it shares its
> one-tool-for-every-task approach. This way, it includes over 100 individual
> tools today to somehow solve every task and workflow. The official version
> also does not support Windows, but as msysgit and TortoiseGit exist today,
> this should be negligible. TortoiseGit is directly based on the TortoiseSVN
> source, so you should find it pretty easy to use.
>
> Mercurial was designed with more usability and interoperability in mind, so
> it's properly supported under all major platforms. Compared to Git, it only
> supports the most common commands.
> On the other hand, its TortoiseHg was designed the same way, meaning that
> it's a GTK application targeted to run under several platforms as well.
> Therefore the user interface is quite different to that of TortoiseSVN.
>
>
> After this rather long mail, I hope that we can eventually come to a
> conclusion about which distributed version control system to choose. Our
> existing Git mirror should be suitable for evaluating Git and I'm also
> doing a local import of the SVN repository into Mercurial right now (yes,
> it seems to work this time).
>
> By the way, we can still maintain a SVN backend for the trunk/master branch
> afterwards, so that people may still read the repository the same way
> as they have done before.
>
> Best regards,
>
> Colin
>
>
>
I have always found msysgit to be unusually slow in handling
checkouts/branching. Of course, given what MSYS really is, that really isn't
a surprise to me (MSYS is a fork of a really old version of Cygwin, 1.3.3 I
believe).

And while TortoiseGit is similar to TortoiseSVN, my experience with it has
led me to believe it is slower than its SVN counterpart.

TortoiseHG does work, but overall, I don't like using shell extensions, and
I haven't really used TortoiseHG recently since I got my new x64 Windows
desktop computer. It seems okay, but it looks sort of ugly on Vista and
higher thanks to the fact that GTK+ doesn't really render widgets on that
platform very well.

Mercurial itself, though, is very pleasant to use. I use it all the time for
my projects, and I feel that it would work well for ReactOS.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-dev/attachments/20091128/b9b686bf/attachment-0001.htm 


More information about the Ros-dev mailing list