I have just set up a subversion repository for a web project, and am trying it out for the first time.
Can anyone give me some reasons why this is a better solution than just storing my projects in Dropbox?
So far I have two reasons:
- Comments/descriptions of each change.
- Each change is attributed to a particular person.
There must be more advantages than this - what are they?
Many is the time I have been progressively enhancing a layout and end up going down a dead end, or striking some bug, and not being able to backtrack to a stable point from where you can try something different. If you have been making commits to a versioning system, going back is easy.
it serves as a backup and a collaboration system, with secure web-based access. Branching offers an easy way to work on multiple versions of code, e.g. a web app, where new features are added in separate branches for each version of the app
In a version control system, you decide what constitutes a commit. Dropbox (which is awesome) just does it each time you save a file. As others have noted, being able to annotate those changes is critical if you're going to go back at any point.
As a designer first, I recommend Git over Subversion. I used subversion for years, but was quickly won over to Git by two things. First, Commits are separate from Pushes. So you can keep your changes fine-grained and contribute them back to the repo in logical chunks. Second, I found branches to be much easier to work with in Git. Which means I use them more. For example I develop new stuff on a branch so that Master is pristine in case I have to do an emergency update while half-way through making a new version.
There is a great svn -> git crash course here.
I don't use DropBox, so I can't speak with any insight to it, but I do use Subversion and Bazaar. In addition to what others have mentioned, I find using them very useful to diff what is in production with what I have in my working copy. (I know this can be done w/o SCM, but it's so easy this way).
The value this has is most apparent if others you don't know make changes to your work after you deploy and then, at a future point, you are called back to to more work. It allows me to quickly pinpoint what has changed.
Using source control management is also enhanced if you integrate a bug tracker like Trac or Redmine.
This was the article that sold me on the idea of using Subversion.
I've set up my repository on an external disk, so I can just take the disk with me when I work away from home (even works without the Internet!) and then checkout a working copy onto my laptop for further editing.
If you have the set up described in the article you can use the working copy for client approval and then export a live copy for production in a few clicks...
keeping several versions of your code in sync is never easy, but using Subversion means that you can have as many copies as you like and update them all from a single source, safe in the knowledge that changes are controlled, reversible and only the files that need changing get updated.
Unlike FTP'ing files back and forth, which sometimes leaves your development copy and server copy in a bad state.