I realized I probably should have linked to the book on Subversion earlier in case you haven’t found it yet. Now, yesterday I blogged a bit about how the Delphi team’s SVN repository is setup, today I’ll discuss how SVN externals are used in the BDS repository. One thing externals allow you to do is link different repositories together.
The “TP” tree, the main BDS repository, is made up of a few different SVN repositories. One example of an external repository is the C++ compiler. The C++ compiler that’s used to build the Delphi compiler, among other things, is not built within the TP tree rather the binaries are provided via an external link. The main reasons being it provides the C++ compiler team the freedom to work at their own pace and not worry about affecting the larger BDS repository and helps reduce the build overhead for those of us building the BDS tree all the time which takes roughly 15 minutes on this machine. There are other such external links but pretty much fall under this same usage pattern.
If you’re a Delphi/C++Builder developer one use of externals could be for your third party components. Since you’re probably less/unlikely to modify that code you could create a separate repository which could feed your main repository with those binaries rather than constantly rebuilding static code. The same could be true of any utility packages, DLLs or .DCUs within your project that change infrequently. Be sure to refer to the book mentioned above for more of the specifics on SVN externals.
In the case of the IDE, all IDE, RTL and VCL packages are checked into the main repository and built during the normal build process. The IDE itself is very modular and many of the different features/packages can be build independently either from the command line with MSBuild or from the Project Manager. There is an IDE project group file checked in which contains a large number of the products packages making it easier to work on such a modular code base.
There’s lots more to talk about so I’ll continue chipping away if people are finding this of value.
Please let me know if you find this useful/interesting. Thanks!