In a company working on a long term software project, there are 6 to 9 developers working in the same office.
The development team uses JIRA for bug tracking and CVS (and some SVN) for version control of different Java Web Apps related to the software application.
The team uses REST to communicate between the Web Apps on different servers. The environment consists of Amazon EC2 and Google App Engine Apps, all written in Java, HTML, CSS, and JavaScript.
The development team commits the code every day. Using this strategy, deployments happen every 20-25 days, but they would like to target once per week or once every 2 weeks instead.
When the code goes through testing, the testers find and report bugs, but when the development team fix the bugs and deploy the software, the software sometimes then has more bugs in it because developers working on new features are still committing code to the repository.
Sometimes the sales team or customers find bugs as well on production systems. Our thought is that we could check out a copy of the code that is stable and make changes there.
I suspect this is a problem with how the version control is used, but it could be something else in the process. How should this agile development team of 6-9 people make sure that the releases are both frequent, once per week or once every 2 weeks, and that the deployments are high quality with no regression bugs?