[Lazarus] SubVersion vs Git

Graeme Geldenhuys graemeg.lists at gmail.com
Wed Nov 5 12:17:21 CET 2008

On 11/5/08, Florian Klaempfl <florian at freepascal.org> wrote:
> Git is a hype. Git might be nice for projects with >100 developers and
>  which has (like linux) dedicated branch maintainers. Git allows to
>  support complicated project structures with several layers of
>  maintainers and project managers. But this is something smaller projects
>  like FPC or Lazarus don't need.

That's like saying.... I'm a single developer, I don't need a Source
Code Version tool.

>  >
>  > * Git repositories are MUCH smaller.
> Who did tell you this? Linus? Does he have the history of the Linux code
>  since version 0.1 in his repository?

No Linus didn't tell me anything... ;-) I simply read what many people
have said. And to prove the point, I did my own tests as shown below.

As for the full history of Linux kernel.... Yes that IS available. :-)
You have a few choices:
"If anyone is interested, I have put on my website[1] a git repository
containing the full history of Linux, from 0.01 to now.
It's built from 3 other git repositories:
 - the one from Dave Jones from 0.01 to 2.4.0,
 - the one from tglx from 2.4.0 to 2.6.12,
 - the one from Linus Torvalds from 2.6.12 to now."

Just go to:  http://lwn.net/Articles/285366/

> I doubt that a repository containing the full lazarus history is smaller
>  than a repository containing each file twice.

OK, lets see... Lazarus HEAD revision only, using 'svn update'. I did
a 'make clean', removed all *.ppu, *.o, *.compiled and all
executables. 'make clean' did not catch all files or folders by the
way, so I had to remove them manually.

HEAD exported (no .svn folders) = 76MB (1 revision of source code only)
HEAD checkout (with .svn folders) = 314MB  (that means 1 revision only)

So far that means SubVersion added 238MB of noise simply to manage ONE
(head) revision!!! I guess there is a lot of crap in those .svn

So, I then asked Git to get me the HEAD revision only for Lazarus
trunk. Again, that's only 1 revision, and Git will maintain the
history from there onwards. I just completed the "checkout" of HEAD.

HEAD checkout using Git = 108MB  (that means 1 revision only)

So Git is already 206MB smaller than SubVersion using the HEAD
revision only. Wow, that's quite a saving of space!

I'm busy fetching the FULL Lazarus trunk history for Git. That's
around 8 years 3 months of information which equates to 17235
revisions in total. Currently I'm at around r3300 so have a while to
go <smile>, but it's going pretty quick(ish). I'll report back later
today on the full history size of Lazarus in Git. BTW: I'm not going
to bother getting every revision for SubVersion, that's going to take
forever and by the looks of it, fill my hard drive in no time.

  - Graeme -

fpGUI - a cross-platform Free Pascal GUI toolkit

More information about the Lazarus mailing list