I realize that the phrase “good practices” is a bit dubious and overused, but I think it applies to my question.
I have some good web development experience, but I would like to hear what are some good basic practices when doing freelance work vis-à-vis project management.
For example, I have the target domain, mydomain.com. Should I do all of my testing at a subdomain, i.e. dev.mydomain.com, protected by .htaccess or some other means?
I am familiar with SVN, but not for web development. What’s the best way to version control a website?
I have set up two databases, mydb_dev and mydb_rel. Does it make sense to do all of my work on _dev then transfer the structure to _rel? What happens after the first release?
If you can answer some of these questions or link me to a good resource it would be great. My searches so far have only yielded HTML tutorials!
What I would generally suggest is the following. The team should have 3 kind of “deploy” environments:
Here’s something that treats this concept. What I would suggest is that the “test environment” (or pre-release environment) lies on the same server with the same configuration as the final “production environment”.
To what concerns version control I would use it just for versioning source code. You can use whatever version control (or even configuration management tool) you like. Here it is a good practice to do branching, so whenever you release a product (deploy it to the production environment) you create a branch with a corresponding version number to it. In parallel you continue to develop on the main branch. This has the advantage that you can do possible bugfixing that may happen to your release and you can redeploy the branched copy without redeploying new features that in the mean time have been added on the main development branch. Search the web for best practices on branching, there is a lot of stuff around. I wouldn’t however use SVN or something for versioning your website directly..at least I’ve never heard of such a practice. Better way would be to create backup copies of your production environment in a daily fashion on the server somehow…