To re-use much of my answer to a different question:
I use the NetBeans IDE for editing PHP, HTML and CSS, and I keep all project files in a Subversion repo. I implement strict access controls for any other developers accessing projects, especially if they are consultants outside my company.This way I can prevent developers from changing (or even reading) parts of the source tree they're not authorized to and everyone working on the project can easily merge changes in with the work they are doing.
Trac is a vital part of my workflow as well, as it shows me what in the svn repo was changed, when, and why. Any changes to a project must have a trac ticket explaining what was to be changed, who requested it, and why; every SVN commit must have a trac number associated with it.
What I do is, when code is checked in to the development server using svn commit
, a working copy on the development server is updated. That way, all testing is done via the webserver running on the development machine, allowing me to grant fine-grained access to developers -- they don't need all they code because they run and test their changes off my server. So the workflow for me is as follows:
- Check Trac for a ticket describing work to be done
- Update/Checkout code from svn to make sure I have the latest copy
- Make changes to code/html/css in NetBeans
- Commit changes to subversion. Staging site is automatically updated upon commit.
- Test site off staging server. If more work needs to be done, go to 3.
- When issue has been resolved, comment in Trac which SVN revisions I believed solved the issue and mark the ticket as ready for review
- When client/management/etc approves ticket is completed, Trac ticket is closed.