Using CVS to manage RT customizations

I’m trying to figure out what is the best way to get RT
under revision control locally so that I can make local
customizations to it for a specific application and
easily push those changes into production on a separate
server. For the most part, the changes would be application
specific. I would like to use CVS, since that is what I’ve
used the most in the past, but am open other revision control
packages, if they would be more suitable for this.

My main question is: Is it better to install RT somewhere
and import the whole installed tree into CVS (e.g., all
of /usr/local/rt3.6.1), or is it better to import the original
sources (the result of tar -tvf rt-download.tar.gz) into


We use SVN/SVK and manage 6 projects that are combined into our RT

RT + RTFM + RTx::RightsMatrix + RTx::Shredder
//rt/bp – the rt/bin, rt/sbin, rt/etc/, rt/lib, rt/share directories

Local customizations:
//rt/cac/lib – the rt/local/lib directory
//rt/cac/html – the rt/local/html directory

We divided RT_SiteConfig into 3 separate files (in three subdirectories)
//rt/conf/base – rt/etc/base/ most of the SiteConfig file
//rt/conf/db – rt/etc/db/ the db connection settings
//rt/conf/status – rt/etc/status/ DevelMode and $rtname

I then have a web application (SCManage) that can compose a unified
directory tree out of branches of the above projects and then push out
to our web servers (dev/eval/prod).

Joby Walker
C&C SSG, University of Washington

Matthew Pressly wrote:

What is SCManage exactly? I am in the early stages of creating a
management tool to allow our web application developers push changes to
production server with out contacting me. I would like to integrate with
SVN and also use it for managing my development working, including RT

Marc Jones
Systems Administrator
Student Affairs Information Technology
McMahon Commons, Main Floor
2011 Hillside Road, U-1228
Storrs, CT 06269-1228
Phone: (860) 486-4559, Fax (860) 486-6818

SCManage is a PHP application that I wrote a few years ago. It is
pretty crude – since I was the target audience so I didn’t care about
beauty. Each project in SCManage is defined by an ini file that
indicates the SVN repository path and where to store the working copy on
the local filesystem (an some other bits). From the interface you can
select a tag/branch that you want to use switch/update/revert the local
working copy. The original architecture (that I preferred) had the web
servers check to see if there was an update and if so rsync to perform
the update. But because of some conditions that are not of import here,
I had to add the ability to push from SCManage to the web servers.
Currently I just have the web app call a script which performs the rsync
to the proper locations – you can also do a dry run to see what will be

I’m certain that some elements would need to be re-written for anyone
else to use. The first major bit is that we use a different structure
for our SVN repos. Instead of the standard BTT (branch/ tag/ trunk/)
directories we have dev/, prod/, and /. Each directory has
branches and tags (trunks and releases in our parlance): dev for dev
stuff; prod for production stuff; and for that user’s code.

Joby Walker
C&C SSG, University of Washington

Jones, Marc T wrote: