views:

21

answers:

1

We have a series of scripts that are used when building Apache. Specifically these scripts are used to:

  • patch the vanilla source code,
  • patch in customer specific functionality,
  • build and install the Apache server,
  • build customer specific modules, and
  • create a custom install tarball ready for eventual deployment.

N.B. The deployment of the tarballs and configs is handled by other independent mechanisms. This system creates the install tarball for deliver to Ops who then handle the deployment to the web farm.

We have versions of these patches and modules for:

  • different OS's and OS versions, and
  • different Apache releases.

N.B. The different Apache releases tend to exist only during testing and migration to a new release of Apache across the web farm.

I have now brought the patches and custom modules under CVS and currently have them tagged according to Apache release version.

Should I keep the tagging simple and use subdirectories to distinguish between Linux specific and Solaris specific elements? Or should I keep one directory structure and use more complex tagging to distinguish elements for the different OS's?

We are currently using CVS and are about to migrate to SVN.

+1  A: 

For platform-specific versions, it usually helps to:

  • have template scripts (i.e. scripts with variables in them)
  • a deployment script which will copy the template and replace the variables with platform specific data (hostname, port number, paths, ...)

That is not always possible for all type of scripts, but if the differences are limited, that approach allows you to go with:

  • one simple tagging
  • one simple tag
  • one central place to manage platform-specific differences (the "deployment" script)
VonC