I started to develop my Photoblog about a half year ago. In the beginning I just wanted to try Rails and the best fit was to start with photo publishing application that I needed at that time. It was killing two birds with one stone, because I was not aware of any existing blogging application that would fit my needs. I wanted to publish many photos associated with prose-like text so galleries were out of question and blogging applications I've tried were clumsy regarding uploading many photos. But maybe the biggest excuse to do it myself was Rails :-) In the beginning I did not use any VCS. List of excuses contains following:
- I am just playing with Rails
- I am lazy to learn how to install Subversion on Win or force my brother that hosts the application to install it to FreeBSD.
- app is not big enough to deserve VCS
- fear of breaking it with too many changes and not being able to get back
- all changes need to be small in order to avoid mentioned fear
- (never needed for this blog, but I do it often in work) no history for artefacts. If something looks strange I like to check history to see how I got there
- once deployed, unable to get back easily. You can imagine how often my production environment caused previously unseen problem. When that happened I needed to work fast to resolve it in production, because it was often easier that manual rollback to previous state
- revert in case of messed code, wasting only time it took me to mess it, but not more.
- explore new features without a need to finish previous one - I started to do gallery-like navigator in parallel with changes in layout, exploring different layouts and finally started to implement this IT blog, gallery and more. When I am happy with some feature and I like to move it to production, I just push to to main repository and merge.
- do very easy rollback in production if I find "it will not be as easy as I thought to put it into production, but I do not have time to finish it immediately" (it might need keeping migrations correct and tested, but otherwise it is matter of
hg revert 53
- hg clone source dest
- hg status
- hg ci
- hg up
- hg push
- hg revert