Boost logo

Boost :

From: Julio M. Merino Vidal (jmmv84_at_[hidden])
Date: 2007-06-07 10:49:01


I am a big fan of DVCS systems, so I felt the need to chime in. See
below.

On 07/06/2007, at 16:21, David Abrahams wrote:
>
> on Wed Jun 06 2007, troy d straszheim <troy-AT-resophonic.com> wrote:
[...]
>> * commit/branch/merge locally (not in the 'central' repository)
>>
>> Interesting the emphasis on git's being distributed... there is no
>> 'central repository'.
>
> This part I have some trouble buying. In Linus' world, *his*
> repository is central... well, at least, it's the master from which
> releases are spun. In a project where we don't have a single arbiter
> for what goes into a release, I'm not sure we can have a master.

It is true that, by definition, there is no central repository. But
by convenience, and for "big" projects, there will always be a more-
or-less central repository. I have yet to see a project using a DVCS
that does not declare a specific server to be the central one. (But,
for example, I maintain some personal files in a DVCS system and I
have no "central" repository; I just sync all the ones I have from
time to time to get the updates.)

But that's a good thing. This "central" repository has the blessing
from the project maintainers, and it is supposed to contain decent
code because only "official developers" are allowed to push to it
after reviewing what they are pushing. However, everybody is free to
start its own public repository if he wants to, to publish his
changes. And this is easier than ever: no need to deal with patches,
tarballs, or any other way to simply distribute changes for a
project. Just pull from there and you get this or that experimental
or non-official work.

And what many people fails to realize: a DVCS may not bring _you_
(the "official" developers) any advantage over a centralized one.
But it does really bring advantages to outsiders. They can just
clone the central repository, do any changes to it without having to
make them public, and painlessly keep it in sync with the master copy
at the central repository. (I'm currently doing that to maintain
some changes I'm working on for Linux/PS3.)

Imagine, for example, the developer of a new library for Boost. He
could integrate its library straight into the repository (a local
copy, that is) from the very beginning and develop it in-place. Even
when doing so, he could easily sync with the latest changes on the
server *without losing any history*. And when somebody had to review
it, he could just pull from his modified tree and get a modified
Boost distribution with the extra library built-in. Later on, after
this new library had been reviewed, the maintainers of the central
repository could just have to pull from this developer's repository
to get the new library *and* all associated development history.

And at last, I'd like to suggest you to look at Monotone too (http://
www.monotone.ca/); its tutorial is enlightening -- it convinced me
after a quick read that DVCS were just The Way to go. (Or if you
want to play some more with Git, use the Cogito interface, which is
simpler and more user-friendly, yet remains compatible with Git at
the server level.)

Kind regards,

-- 
Julio M. Merino Vidal <jmmv84_at_[hidden]>

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk