I have two classes that all of my sites use. Here is how I set up version control.
1) I created a database that looks something like this
CREATE TABLE IF NOT EXISTS Sites (
ID BIGINT NOT NULL auto_increment,
URL VARCHAR(150) NOT NULL,
ClassDir VARCHAR(150) NOT NULL,
Username VARCHAR(25) NOT NULL,
Pswrd VARCHAR(25) NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS Classes (
ID BIGINT NOT NULL auto_increment,
FILE BLOB,
Ver FLOAT(5,2) NOT NULL,
LastUpdate TIMESTAMP NOT NULL,
PRIMARY KEY (ID),
INDEX Ver (Ver),
INDEX LastUpdate (LastUpdate)
);
CREATE TABLE IF NOT EXISTS St2Cls (
ID BIGINT NOT NULL auto_increment,
SiteID BIGINT NOT NULL,
ClsID BIGINT NOT NULL,
Ver FLOAT(5,2) NOT NULL,
LastUpdate TIMESTAMP NOT NULL,
PRIMARY KEY (ID),
INDEX SiteID (SiteID),
INDEX ClsID (ClsID),
INDEX Ver (Ver),
INDEX LastUpdate (LastUpdate)
);
Then I wrote a PERL program that will keep my sites updated based on the information in this database. It really devolved to 1 query:
SELECT a.SiteID FROM St2Cls as a, Classes as b WHERE a.ClsID = b.ID AND (a.Ver < b.Ver OR a.LastUpdate < b.LastUpdate)
I have a c++ app that I use to update the files and add sites to the database. Then my PERL script runs everynight and uses the above query to update sites that need it using ftp.