At the company I work for we have a pretty complex development environment. Our system runs on several servers, each server fills a different role and has its own code base. There might be more than one actual server for each role (for example we might have 2 messaging servers, 3 storage servers, 1 web server, 1 DB, etc.)
Up until now, the server side developers have been working on SVN, while other developers have been keeping track of their own code by themselves. Everyone has been uploading manually to the correct server via FTP. That means that if someone changed the code for a messaging server for example, he would need to manually upload the changes to 2 or more servers.
Important note: not all servers are on the same LAN.
I've been thinking about changing everyone's work flow and I wish to consult with as to what the best setup would be.
I was thinking to have a single SVN server (basicly open the server side svn to everyone), and have different repositories for each "server role". And have a post-commit for each repository to the server of that type, that would run a "svn update" on a working copy that will be on each server. (I would rather have all the server role's codes on single repository - but how will I handle the post-commit script?)
My question is this: a) Is this the best setup? b) How would you implement the post-commit scripts? How will it know to which server to send updates? c) What is the best way to secure this (with multiple developers)?
Thanks in advance for any replies. Any help and suggestions are greatly appreciated!