I have been playing with SVN lately and it feels like it is something I should be doing, even if I am working on things solo. I think I may be totally misunderstanding the best way to use SVN. I have never worked with a team using SVN before so I have not seen what sort of best practices other people have developed. Here is my workflow at the moment.
-> On local machine, checkout copy of repository.
-> Make local edits.
-> Commit changes.
-> On test server, run a bash script which does a checkout and rsyncs the changes to the working location. I do a checkout so that I can just update the codebase and then rsync can be told to ignore the SVN stuff that goes along for the ride in the checkout.
-> As I hit milestones I can tag it, shut down the production version and then run an export.
Here are my problems.
1. This process has a lot of steps for making small changes (maybe I forgot a semi colon.) Ideally I would just setup a test instance on a local server and commit the changes only when I have made important code changes rather than fixing stupid mistakes. The problem with that is I do work with other developers who would not be setting up a local test instance. They would probably need to commit the smallest changes.
2. My multiple step process does not work real well for other developers. I run the update script right from a terminal (via SSH) which is not ideal but fine for me. So the process is to commit the change, run the update script from the terminal and then check my changes. This may seem like a huge PITA but it is actually not that bad. It actually goes really fast and I am not a patient person. If it were too slow I would have abandoned it long ago.
That leaves two steps that someone without shell access would not be able to handle. They would not be able to run the checkout or run the update script.
I could cut out the update portion by symlinking the checked out code but that does not really help. I have been thinking about setting up a simple protected dashboard page which would have a link to run the script. Right now I think that is my best bet for my current setup but I am sure there are other more obvious methods which I am not thinking of.
How do you guys handle this?