We are in the process of converting our old source code repository to svn. The old repository is flat, all modules are stored on the same level. We have a build tool that, given a configuration file, checks out all modules that form an individual application and place them in an appropriate hierarchy and then builds and installs the application.

The layout for a typical application is:

  ./mod1
  ./ICS/mod2
  ./ICS/...
  ./DCS/...
  ...
  ./COMMON/modX
  ./COMMON/...

In svn, we want to store all modules in this hierarchical form.

My question is what to do with the "COMMON" directory above. The modules in this directory do not belong to the application, but are specific versions of modules that override the version preinstalled on all our systems. Ideally, an application has no need to override one of these modules, but sometimes it is necessary e.g. because of a bugfix needed by the application.

A module override must refer to a tagged version of the module.

As I see it, we have two options for the modules in "COMMON":

1) use "svn copy modX/tags/... COMMON/modX" for each module
2) use an svn:externals property to place all modules in COMMON

What are the advantages and disadvantages of these options?
Which one is better, and why?

- Michael

Reply via email to