How the Delphi and C++Builder Subversion repository is organized

Here is a comment from this post asking:

How do you manage IDE packages in SVN repository? Do you have separate repositories for each package or you have only one repository for all packages and all editions of Delphi?

This is a great question. First off, our repository is still referred to as “the TP tree” dating back to Turbo Pascal days.  We have one main repository for the entire BDS product. There are roughly 44K files in the TP tree totaling ~1.1GB of diskspace. When checked out to a local machine, including the SVN overhead, the tree is roughly 107K files and ~2.55GB of diskspace. The build process uses $g(MSBuild) and can build all of the SKU’s, including support for all the different languages (English, German, Japanese etc.). Typically, each directory has a make.proj file which details how that directory is built and what it’s dependencies are (among other things, refer to ccnet.config). There are some external projects which I’ll discuss in another post but the core BDS
R&D team generally works in this single SVN repository. Some of the major pieces included are:

  • Delphi compilers (Win32/.NET)
  • RTL/VCL (again Win32 and .NET)
  • the IDE (Delphi, Delphi for .NET, C++ Builder and C#)
  • Together
  • ECO
  • Zombie test framework
  • Zombie .DFM models (roughly 1000 .pas files)
  • Lot’s of other things

I’ll leave it here for now and will look to continue this discussion in follow-up posts. In the mean time, here are some links to older post I’ve written regarding our development process:

6 thoughts on “How the Delphi and C++Builder Subversion repository is organized

  1. Hi,
    Interesting. I was under the impression that you were using StarTeam internally. I am looking forward to the follow up posts.
    One thing I would like to know in particular is this: How do you handle adding the version information and icons to the executables?

  2. The main reason why I’m still not decided to go to SVN is lacking a a true version labeling like "TAG" etc. Do you manage this as a SVN virtual copies? How efficient it is with the situation when you must "label" a number of releases (test builds etc.)

Comments are closed.