Jochen,
On Tue, 2008-07-01 at 13:05 +0200, Jochen Theodorou wrote:
> I think it is now the right time to decide on a tool, even if we switch
> to it much later. The reason is that there must be infrastructure on
> codehaus. If we are sure we want DCVS, then we should decide which of th
> systems, so the codehaus people can concentrate on the ones the projects
> do request. Most likely they will do only one of them. So the bestwould
> be to make a top3, which seems to be for me Mercurial, Bazaar, Git at
> the moment, meaning that I prefer Mercurial and Bazaar over Git. As of
> the format on the server side... that is not really our problem, that is
> the problem of the guys on the server, and they are surely will take an
> eye on it. I think for us the most important things are not memory and
> speed, but tool support and support for the workflow we target.
I think this is a good point. Codehaus are reactive as well as
proactive. They have set up Xircles so they can deal with DVCS as well
as Subversion, and are looking at which DVCS to offer. If we can say we
want to use X where X in {Bazaar, Mercurial, Git} that will help them.
> I placed Mercurial at 1, because it seems TortoiseBzr is no longer
> developed, but TortoiseHg still is. There are basic plugins for all
> IDEs, including Intellij, Eclipse and Netbeans. Mercurial and Bazaar
> work on all operating systems, because they are not written in a wild
> mix of C,bash, Perl and TCL/Tk. I dislike git mostly because of its huge
> ammount of command line arguments. In subversion you had what? checkout,
> commit, update, diff... maybe merge and copy. That's it. Do we really
> need more than that?
This statement about TortoiseBzr is not correct. Canonical spotted that
development was stalled and have engaged Mark Hammond to pick things up
and carry it to release, so there is paid help on the job now. There is
a release early, release often programme in place.
As will be pretty obvious from my previous emails, my preferred ordering
would be Bazaar, Mercurial, Subversion, Git.
> I am usually having different directories for groovy, where each
> directory represents a certain branch. That menas atm I have a 1.5.x
> directory and a 1.6.x directory. If I take it right, then for git you
> have the whole repository in the top level directory, but the classic
> checkout is made only on a certain branch... meaning I would either have
> to symlink the .git directories or have two of them.... But having two
> of them... The initial checkout takes really a long time. Now, that
> might bea problem for all three systems...I would have to find a way to
> checkout not the whole thing, but only a certain part... in some cases
> this is just what I need.. and I don't wnat to waste several 100MB just
> to get 20of them in the end.
In Bazaar you would have a shared repository with the Trunk, 1.6.x and
1.5.x branches in it. They then share changesets. In Git you have a
repository in which all the branches reside with sharing of all
changesets. What the best with Mercurial I am not sure just now.
> Which leeds me to the workflow itself... How should that be? I know git
> supports almost any workflow, but what kind of workflow do bazaar and
> Mercurial support? I mean if none of them allows the workflow we want to
> have, then there is no reason to use them. But frankly I don't know
> about the workflow yet. I am only sure that having one main maintainer
> that has the only power of hte branch is most likely not going to work
> for us.... also I never understood how I can pull a different version
> from someone, if that someone doesn't host the version...
Git supports the "Linus managing Linux development" workflow. OK so it
can be coerced to others. Bazaar and Mercurial are designed to be much
more agile and adaptive. Bazaar can in fact cover more different
workflows than Git, as I think Mercurial can.
I think the trick here is to specify the workflow you want and then fit
the tool to the job, and in the process see if one of the tools rules
itself out. I suspect that this is not the case, that all three can be
used with any of the workflows we want to put in place.
Associated with Bazaar is Bundle Buggy and Patch Queue Manager, these
are ways of formalizing the acceptence of changesets into the mainline
branch. They are lightweight, developed by the Bazaar developers to
support Bazaar development. I am sure Mercurial and Git have analogues.
With any system there will always be one branch that is accepted as
being the mainline (trunk in Subversion speak). The question is how to
manage updates to that mainline. Part of this is access control, part
of this is changeset management. The Bazaar, Mercurial and Git
developers will create tools for their own use so rather than start from
scratch and try and work things out from first principles, it is
probably best just to pick up what they have.
> Even if we switch to a DCVS System, we most likely will still have a
> central repository in the end... or were are the other repositories
> comming from?
Anyone can have a branch, that is the whole point of DVCS. But there
will always be one that the community accept as being the official state
of software.
--
Russel.
====================================================
Dr Russel Winder Partner
Concertant LLP t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road, f: +44 8700 516 084
London SW11 1EN, UK. m: +44 7770 465 077