Hi, I am using SVN for source code management on a Classic ASP app that I develop/support. I maintain several versions of the app as required by my company:
- Discovery/playground version - where I do all the work. My Working Copy
- Dev/Test versions (no access to these sites/servers)
- Live version (no access to these sites/servers)
Here is when I run into trouble:
- Work is done on Project A and is committed
- Project A is promoted to Dev/Test using an export from the log
- There is a problem with Project A and it is stalled in Dev/Test
- Project B comes along, is prepared and committed
- Project B now builds on Project A, but there are parts of Project A not ready for prime time
Short of just "be careful not to screw anything up," is there anything I can do to make sure that parts of projects can stall in the development process without holding up everything?
The necessity of a web server in the process seems to be causing me problems. I know that I can branch Project A when it goes to Dev/Test, and then merge it back to the trunk when it is live. Also that way I can revert my playground from before the branch and do Project B without anything from Project A having a chance to go live accidentally. However, then I can't play with Project A on my playground site. Do I have to spawn a new playground site for each branch?
I know that this is probably too specific to my situation with all its constraints, but I'm hoping somebody else has experienced something similar to my situation.
Thanks!
EDIT:
Here is my current solution: Maintenance fixes - changes that could go immediately to production - can get made in WC and committed to the trunk. Anything that has dependencies on a project gets branched. Working copies along the test path can be switched to point to that branch to test a project. Branches have to be kept up to date, and we can use commit hooks to keep people notified. When a branch is ready to be deployed to production, it gets merged back to the trunk and deployed.
This makes sense and would work, right?