How Can I Setup A Development Environment and Staging Server

sjwdavies
sjwdavies
Hey guys.    I’m posting this as i’m looking for some ‘real life’ advice. I’ve read the subversion ‘book’ and am still left wondering exactly how to use subversion in my scenario.    I work for an Advertising Agency. We have a development team of 4 PHP Developers. We have a very large client and at present, the site is under subversion control.    What I’d like to do is setup an internal development process whereby a request comes in from our client, we complete the necessary work, then place on a staging server for approval by the client before publishing LIVE.    We’ve recently invested in a dedicated Windows Development Server (we have clients using both ASP and PHP, MSSQL and MySQL).    I was thinking of creating two internal sites. http://development.clientA.local and http://staging.clientA.local. I was going to setup a post-commit hook so that the http://development.clientA.local site was always updated whenever a change was made. This would be the site we would access as we develop to make sure our code works.    When a piece of work was complete, I was going to use the http://staging.clientA.local to take a copy of the ‘trunk’ to show to the client for sign off.      Can you see what i’m trying to achieve with this setup?    The questions I still have for example are:    - Say a developer is working on the trunk, completing a request for the client, but someone else is working on a different part? When http://staging.clientA.local is updated, it might contain broken areas of the site aswell as what the client has asked for?  - Following on from the above, what if the client views http://staging.clientA.local but wants minor tweaks?  - Should be keep the main line of development as the trunk, and create a branch for every change the client requests?    I understand what a Branch and a Tag are but am not sure how, and more importantly when, they should be used in my example?    Any help or advice you guys can provide would be fantastic.

Last updated

rjollos
rjollos
sjwdavies;112668Hey guys.  - Say a developer is working on the trunk, completing a request for the client, but someone else is working on a different part? When http://staging.clientA.local is updated, it might contain broken areas of the site aswell as what the client has asked for?  [/QUOTE]    It sounds like you should branch from the trunk to create a Staging branch. Developers work on the trunk and the development site gets updated from the trunk. When the developers decide the work is ready, they selectively merge the changes into the Staging branch to be viewed by the client. The developers must decide when the work will be merged and are responsible for making sure that the staging site doesn't break and has what the client wants.    [QUOTE=sjwdavies;112668]  - Following on from the above, what if the client views http://staging.clientA.local but wants minor tweaks?  - Should be keep the main line of development as the trunk, and create a branch for every change the client requests?  
   The simplest way to do this would be to make those changes on the trunk and then merge them to the Staging branch. It sounds like you need only two development lines, the Trunk for changes that are not ready for the client to see, and the Staging branch which contains changes merged from the trunk. If you don't want those "minor tweaks" on the trunk, then you can either make them directly on the Staging branch, or branch from staging to implement and test your changes before merging them back to the Staging branch.
cairon
cairon
Hello everyone ! I am Cairon from UK. I am just new user in this fourm. I have a dedicated Centos 5 server that is a live production server. Now I need to have a server for testing things like new kernels, updated packages or changed settings to check if the web applications still run after these updates or changes before I update the live production server.

1-3 of 3

Reply to this discussion

You cannot edit posts or make replies: You should be logged in before you can post.