Boost logo

Boost :

Subject: Re: [boost] [git] Mercurial?
From: Edward Diener (eldiener_at_[hidden])
Date: 2012-03-20 23:45:56


On 3/20/2012 10:56 PM, Joel de Guzman wrote:
> On 3/21/2012 8:41 AM, Edward Diener wrote:
>> On 3/20/2012 7:03 AM, Julian Gonggrijp wrote:
>> ... snip
>>>
>>> Well, allow me to present some fair reasoning to you.
>>>
>>> With regard to git versus svn: I think enough fair reasons have been
>>> given why git (or a DVCS in general) is better than svn. I'm not
>>> going to repeat those arguments here.
>>
>> I have never heard a single technical argument, in all the endless mentions of Git among
>> the people riding that bandwagon, why Git is better than SVN, or even why any DVCS is
>> better than a centralized SCCS. I consider this whole move to Git and/or DVCS among "hip"
>> programmers little more than a move to conform with what others are doing and feel "cool".
>>
>> I am perfectly willing to read well-chosen technical arguments but not from people already
>> sold on one side or the other. But I really despair of anyone being able to present such
>> arguments in the atmosphere created by Git fanatics and DVCS fanatics. The only thing I
>> have gotten from all this is "I've tried it, I like it, and therefore its superior".
>>
>> Feel free, anyone, to point me to a purely technical discussion, article, whatnot,
>> explaining the practical reasons why using a DVCS, or Git, is more productive and more
>> pleasurable than using a centralized SCCS like Subversion.
>
> I'm not a Git, or DVCS fanatic. I'll just use whatever tool required
> to get the job done. I'm OK with SVN. It works. If you read my previous
> comments on this topic (from last year when this was heavily discussed),
> you'll see that I question the Git move. To me, and I mentioned this
> before: "A Good Craftsman Never Blames His Tools". I know a very good
> luthier who craft world-class guitars using only a pocket knife. And I
> take that to heart with crafting code as well. I find it funny when
> people blame SVN, the C++ compiler, etc, etc, for inadequacies in order
> to flaunt these new shiny tools (Git, Java in the 90s or name-your-new-
> compiler-here).
>
> That is to say, I am not among the "hip". I tend to use the simplest of
> tools: the most basic text editor and a decent compiler, at the very
> least.
>
> Having presented my neutrality, let me present a case *FOR* DVCS...
>
>> From the beginning, Spirit had it's own community, mildly detached
> from Boost. Spirit contributors come and go. We once develop code
> using SourceForge (using CVS, then SVN). I give contributors
> write access as needed. Once, stable, I move or merge the code
> to Boost. It so happens that we had a more frequent release cycle
> than Boost (at the time). Each move was soo frustratingly difficult
> and time consuming (not to mention that I lose and never bothered
> about the commit histories when moving code to Boost from SF; it
> just was not worth the hassle. After all, SF was the master with
> all the histories and the one in Boost was just a copy).
>
> That was fine, but there was something in Boost that we need:
> regular testing by multiple people on different platforms and
> compilers. At one point, because of that need, we stopped using
> SF and finally moved to Boost for development. One drawback that
> I sorely miss from being independent from Boost is the right to
> give write access. Now, whenever a new contributor comes along,
> I have to ask permission from the Boost-Owners for write access
> to the Boost repo. And, a write access privs gives everyone access
> to the whole boost repo, instead of being limited to Spirit only.
> Also, I often wondered about past Spirit-devs who are inactive now.
> They still have write access, but I just let them be. Not being
> in control is a major disadvantage for me. It's my library and I
> want to have more control.
>
> What I want is to have a system where I can decouple Spirit from
> the Boost central repository again. I want to regain the right to
> give Spirit developers write access to this decoupled repository.
> I want Spirit-devs to develop code, create branches, etc. in
> this repository. I want to be able to commit upstream into the
> Boost repo on a regular basis and thus take advantage of Boost
> testing. I want the commit histories of my upstream merge be
> intact on all moves and merges.
>
> It is obvious to me now that what Spirit needs is DVCS. I
> don't care which (Git or Hg). I tried both on my own
> and I find both satisfactory to my minimal needs.
>
> I can certainly craft something using a pocket knife and a
> chisel, but I certainly wouldn't mind a dremel power tool :-)
>
> (PS. I tried Git-SVN and hgsubversion without luck. I simply
> can't get them to work. I'm guessing that these facilities are
> not well supported. In my experience, they simply bork out when
> I try to clone the Boost repository)

Thanks ! I respect you as a programmer and the experience you have
related. You have given practical advantages to a DVCS in your
explanation. But now let me argue the other side.

I am pretty sure you can take an SVN repository and give users access to
whatever part of it you want while restricting access to the rest. When
you do that what is the difference from users having a DVCS to play with
and their own branch of an SVN repository to manipulate ?

Conceptually in my mind it is the same thing. Yes, I recognize that
psychologically the feeling that one has one's own local repository to
play with, and then merge with other repositories, is enticing to
users. Bu how is this different from:

1) Creating a local SVN repository and importing some branches from
another SVN repository.

and/or

2) Having one's own branch of an SVN repository as one's own.

What I object to about the DVCS people is that they seem to assert that
because DVCS has a model they like, where there is no concept of a
central repository, that this is automatically superior in some
non-practical and perhaps personal way. I do not doubt that DVCS systems
may have some very good tools for merging together various local
repositories into some other one(s), but what does this freedom really
amount to ? The end-user feels better because it feels like one can work
separately more easily and then join one's work with others, but in
reality a central repository system has the same "tools". Furthermore
merging work with others is NEVER as easy as people would like to think
it is. I am so tired of hearing about how all this merging of code just
automatically works, and works flawlessly. Who are we kidding ?

I can understand your feeling of separating Spirit from Boost and then
joining back into Boost as you wish, and perhaps indeed a DVCS has
better tools to do this than Subversion, but can you really say this is
a matter of DVCS's being inherently better than a centralized SCCS in
some way to enable this ? How is this process different than merging
whole branches or parts of branches back into Subversion. However it is
done merging is very hard and careful work and it is impossible for me
to believe that a DVCS has something inherently about it that
automatically makes it better.

I guess I am saying that on a practical basis a DVCS may be more
flexible than a centralizes SCCS, but I see no inherent reason for this.

Eddie


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