[Lazarus] SubVersion vs Git

Florian Klaempfl florian at freepascal.org
Wed Nov 5 13:54:07 CET 2008

Alexander Klenin schrieb:
> On Wed, Nov 5, 2008 at 22:18, Florian Klaempfl <florian at freepascal.org> wrote:
>> No. The point is that a dvcs has drawbacks. The distributed nature
>> requires a very strict management of repository structure and for the
>> changeset flow.
> Hm. It is true that DCVS _allow_ various policies and workflows unavailable
> to centralized ones, but I do not see how such policies are required.

At least the development of FPC has shown that such policies are needed.

> While, as I said, I do not advocate moving Lazarus to DCVS at this time,
> I think your notion of DCVS complexity is exaggerated.
> Let us see if I can help it ;-)
>> Which repository is used the create the releases?
> The one currently agreed on by the developers -- just as with SVN.

So what's the advantage then? With a DCVS you've try to force the
developers by organisatorical means to follow a structure. With SVN, the
technical aspects force some structure so it is self regulating and much
easier to keep.

>> What if somebody never pushes his changes and keeps them local till his harddisk breaks?
> His changes do not get into the release -- same as if he would make changes
> to his working copy in SVN and not commit / send patches out.
> Notice the very important difference here: while in SVN these changes
> are "hidden"


> and not available to other users/developers, DVCS allow others to
> use/test/review/build upon changes even before they hit the central repository.

This is where one uses branches in svn: everything is already in a
central storage, interested people get easily informed about the change
because they read commit logs, no need for local backups, no hazzle to
publish local trees and fast access for everybody.

> Another DCVS advantage is that the local changes need not be lumped
> together into a single commit, which is very important for large changes.


>> How does testing work?
> As usual, somebody runs tests and checks the results.

No, everybody, not somebody, has to run tests, at least for FPC.

>> When are tests run? At every commit? Every push?
> That, or at every pull/fetch, or periodically --
> there is no difference in centralized vs distributed VCS here.

Of course there is: before I commit a change to the fpc repository, I
run the testsuite to avoid regressions (takes at least 10 min). When I
use a dvcs, I've to run this tests twice: when I commit (so I know that
my patch works) and when I push all the commits. This is wasted time for me.

More information about the Lazarus mailing list