As you said, subversion is likely to help in your case: using some version control system is fine , and subversion is working fine - and you probably don't need a decentralized system (like git / mercurial / ...).
Main advantages:
- Itβs easier to share the changes made by each developer in your team.
- one central place where the " official version of the sources
- possibly a simple deployment.
Although, I would not just use svn checkout on my production server: well, it can work fine in some cases, but, especially if you sometimes modify files directly on the production server (which you definitely should not do!), You will end up run into problems (e.g. conflicts) on the production server ...
Yes, you can use svn merge in dry-run, but this is not always enough ... And there are no dry updates to update svn - and a conflict in the PHP file usually means a parsing error; and this is bad when it happens on the production server ^^
Instead, I would:
- working fine by doing svn when it's ok to do it
- once in a while (the day before deployment to production, for example), export svn and deploy the extracted application to the intermediate server
- which means that you can test an environment that is closer to the product than your development platform.
- and also means that nothing should go directly to production without testing in an intermediate environment!
- if everything is fine on the staging server, then deploy the same package to the production server.
Oh, and, by the way, about the deployment process, you might be interested in the answer that I give on this issue a while ago: Updating a web application without downtime
As a side element: getting started with such a process is not always easy, therefore:
- Think as much as possible before you begin; posting on SO is a good start, but be sure to discuss with your colleagues who will use this system!
- Take your time: there is probably no rush, and a couple of days of thinking is always useful ;-)
- i.e. Think about the situations you may encounter and your use cases to make sure that the processes you put in place will work for you.
source share